Architecting IoT solutions by implementing sensors, communication infrastructure, edge computing, analytics, and security