The Internet of Things (IoT) envisions cross-domain applications that combine digital services with services provided by resource-constrained embedded devices that connect to the physical world. Such smart environments can comprise a large number of devices from various different vendors. This requires a high degree of decoupling and neither devices nor user agents can rely on a priori knowledge of service APIs. Semantic service descriptions are applicable to heterogeneous application domains due to their high level of abstraction and can enable automatic service composition. This paper shows how the RESTdesc description format and semantic reasoning can be applied to create Web-like mashups in smart environments. Our approach supports highly dynamic environments with resource-constrained IoT devices where services can become unavailable due to device mobility, limited energy, or network disruptions. The concepts are backed by a concrete system architecture whose implementation is publicly available. It is used to evaluate the semantics-based approach in a realistic IoT-related scenario. The results show that current reasoners are able to produce medium-sized IoT mashups, but struggle with state space explosion when physical states become part of the proofing process.