IoT End-User Service Composition via a Visual Programming Interface