Team Project (20 pts)
Projects are the final part of the course. You will form teams, come up with your own idea for an Android application and/or IoT solution, implement it and finally present your solution & write a short report on it.
Projects are done in teams of 4 persons.
Requirements
The topic is up for you to design. However, we require you to compose your idea based on certain 'building blocks'. They can be picked based on suitability to your project idea. These building blocks have to be integrated and displayed in a cohesive story. However, certain implicit requirements also apply to the projects, regardless of which blocks you choose (see them below).
In the presentation, you have to play through this story while showing all the features of your system and how they provide value to your chosen domain(s).
Some feature blocks include topics not covered in the course so far, giving you a chance to learn something completely new if you wish.
We strongly encourage you to build projects where both Mobile & IoT blocks are used together!
Implicit requirements for IoT and Mobile
Below is required regardless of which blocks you choose:
Mobile
- The application does not unexpectedly crash, takes care of lifecycle & permissions management
- Rotating the screen, hitting home/return button in the app should not cause crashes.
- The app can take care of requesting necessary permissions and will not crash if they are missing.
- Use resource files to manage constants used in your app logic & GUI:
- Text values - strings.xml
- Make use of string formatting
- Text values - strings.xml
IoT:
- Document your IoT solution network architecture (clearly show your Things, Nodes, Edge, Edge Gateway, and services used in the Cloud). Also show in this architecture the software/hardware/technology keywords associated with each component (ie. mosquitto, MQTT based, Node-RED, WiFi router, I2C, DHT22, ...). You can use the IoTempower architecture as a base, but we expect more details.
Functional Blocks
Choose at least 3 functional blocks per your preference
Mobile
- Persistent Storage - the app provides persistent storage, choose either:
- Local, on-device (Room DB)
- Cloud storage (Firestore DB)
- Integrating with Web Services or Cloud Services -
- Integrate some REST API to your app
- Use some cloud service, such as Firebase Cloud Messaging
- Location-awareness and Sensors -
- Make use of some of the on-device sensors: fingerprint reader, accelerometer, GPS, etc
- Make use of the Map view
- New API: make use of some API not covered in the course so far
- Choose from:
- WorkManager API
- Calendar Content Provider
- Camera API
- MediaPlayer
- Bluetooth
- Google authentication
- App Widget
- Something else: consult course instructors if your proposal is OK.
Internet of Things
- Use one or more Edge Integration platforms
- Node-RED, IoTempower, ..
- Use at least 6 different sensors/actuators
- New API/Platform - use something not covered in the course so far, ideas:
- Cumulocity IoT Platform - our institute hosts an instance of Cumulocity
- HomeAssistant or OpenHAB
- Esphome
- Tasmota
- Various Dashboard & visualization software
- Various IoT Simulators
- Others (check here for inspiration): confirm your own ideas with course instructors
Cohesiveness of the functionality
Note: If you implement a block, but it does not serve a purpose to the general topic/story of the app (e.g. randomly displaying sensor values in a contact manager app), you will lose points for Complexity and Cohesiveness (see grading info), even though you implemented that block. Instead, you should make sure the minimum 3 blocks form a meaningful whole.
For example, using sensor data + a contact manager usually doesn't make sense. But if your scenario involves functionality where sensors are used in a gesture recognition app that has a feature of sharing recognized gesture pattern with friends (contacts) - this makes more sense!
Other remarks.
Feel free to bring in additional assumptions or solutions to complement the above, but make sure to document them in your report.