Smart irrigation is a specific application of the IoT, where devices composed of sensors and actuators, collect environmental data, like soil humidity, air temperature and brightness, in order to lunch or plan irrigation cycles. These systems function according to a configuration that dictates the way in which every component should operate. Static configurations are limited, as they only represent a set of fixed requirements. However, in domains such as the IoT, technology is continuously evolving, and various users, sometimes with various needs, interact with the system. This leads to dynamic requirements, which are fulfilled by dynamic configurations. This purpose uses the case of an irrigation system to illustrate such requirements, and proposes a constrained-based approach to design self-adaptive smart irrigation systems.