The Internet of objects (IoT) will have to meet the non-functional needs (QoS, security, etc.) of new business applications supported by the cloud. To do this, the interactions between the underlying application software and the communicating objects will rely on networks and communication middleware with configurable, programmable and dynamically deployable capabilities. These capabilities will be available both on pre-existing entities but also on virtual entities, i.e. that will be dynamically created in the Cloud according to the need. In this new ecosystem, meeting the end-to-end QoS needs of these future applications is a major challenge. This challenge has particularly to be tackled both at the level of the Middleware intermediary entities and at the level of the networks interconnecting these entities. In this context, this paper presents our approach for a self-adaptive QoS management at the middleware level for IoT applications. This approach is aimed at: 1) taking advantage of the technological opportunities offered by the Cloud, the dynamic deployment of processing functions and the autonomic computing paradigm, 2) taking into account the hetero-geneity of the solutions that will coexist in this landscape, and 3) ensuring the consistency of the (re) configuration choices thanks to appropriate theoretical tools.