| 
						
						
							
								
							
						
						
					 | 
					@ -80,14 +80,15 @@ void webApi::onApiPostBody(AsyncWebServerRequest *request, uint8_t *data, size_t | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    AsyncJsonResponse* response = new AsyncJsonResponse(false, 200); | 
					 | 
					 | 
					    AsyncJsonResponse* response = new AsyncJsonResponse(false, 200); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    JsonObject root = response->getRoot(); | 
					 | 
					 | 
					    JsonObject root = response->getRoot(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    DeserializationError err = deserializeJson(json, (const char *)data); | 
					 | 
					 | 
					    DeserializationError err = deserializeJson(json, (const char *)data, len); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    JsonObject obj = json.as<JsonObject>(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    root[F("success")] = (err) ? false : true; | 
					 | 
					 | 
					    root[F("success")] = (err) ? false : true; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if(!err) { | 
					 | 
					 | 
					    if(!err) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        String path = request->url().substring(5); | 
					 | 
					 | 
					        String path = request->url().substring(5); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if(path == "ctrl") | 
					 | 
					 | 
					        if(path == "ctrl") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            root[F("success")] = setCtrl(json, root); | 
					 | 
					 | 
					            root[F("success")] = setCtrl(obj, root); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        else if(path == "setup") | 
					 | 
					 | 
					        else if(path == "setup") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            root[F("success")] = setSetup(json, root); | 
					 | 
					 | 
					            root[F("success")] = setSetup(obj, root); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        else { | 
					 | 
					 | 
					        else { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            root[F("success")] = false; | 
					 | 
					 | 
					            root[F("success")] = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            root[F("error")]   = "Path not found: " + path; | 
					 | 
					 | 
					            root[F("error")]   = "Path not found: " + path; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -400,7 +401,7 @@ void webApi::getRecord(JsonObject obj, record_t<> *rec) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					bool webApi::setCtrl(DynamicJsonDocument jsonIn, JsonObject jsonOut) { | 
					 | 
					 | 
					bool webApi::setCtrl(JsonObject jsonIn, JsonObject jsonOut) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    uint8_t cmd = jsonIn[F("cmd")]; | 
					 | 
					 | 
					    uint8_t cmd = jsonIn[F("cmd")]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Todo: num is the inverter number 0-3. For better display in DPRINTLN
 | 
					 | 
					 | 
					    // Todo: num is the inverter number 0-3. For better display in DPRINTLN
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -458,8 +459,8 @@ bool webApi::setCtrl(DynamicJsonDocument jsonIn, JsonObject jsonOut) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					bool webApi::setSetup(DynamicJsonDocument jsonIn, JsonObject jsonOut) { | 
					 | 
					 | 
					bool webApi::setSetup(JsonObject jsonIn, JsonObject jsonOut) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(F("scan_wifi")) | 
					 | 
					 | 
					    if(F("scan_wifi") == jsonIn[F("cmd")]) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        mApp->scanAvailNetworks(); | 
					 | 
					 | 
					        mApp->scanAvailNetworks(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    else if(F("set_time") == jsonIn[F("cmd")]) | 
					 | 
					 | 
					    else if(F("set_time") == jsonIn[F("cmd")]) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        mApp->setTimestamp(jsonIn[F("ts")]); | 
					 | 
					 | 
					        mApp->setTimestamp(jsonIn[F("ts")]); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -479,7 +480,7 @@ bool webApi::setSetup(DynamicJsonDocument jsonIn, JsonObject jsonOut) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
					 | 
					 | 
					//-----------------------------------------------------------------------------
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					Inverter<> *webApi::getInverter(DynamicJsonDocument jsonIn, JsonObject jsonOut) { | 
					 | 
					 | 
					Inverter<> *webApi::getInverter(JsonObject jsonIn, JsonObject jsonOut) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    uint8_t id = jsonIn[F("inverter")]; | 
					 | 
					 | 
					    uint8_t id = jsonIn[F("inverter")]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    Inverter<> *iv = mApp->mSys->getInverterByPos(id); | 
					 | 
					 | 
					    Inverter<> *iv = mApp->mSys->getInverterByPos(id); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if(NULL == iv) | 
					 | 
					 | 
					    if(NULL == iv) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |