Component ensembles provide expressive abstractions that address challenges in engineering software architectures for Internet of Things and cyber-physical systems, particularly when combined with mobile ad hoc networks. A case study in collaborative parking demonstrates the open-endedness of component ensembles and their ability to self-adapt.