SMASH: a Semantic-enabled Multi-agent Approach for Self-adaptation of Human-centered IoT