Phone Application Project with ESP32

with No Comments


1 -Mission Statement


  Product Description

This product is designed to allow an individual to fully monitor the temperature and humidity of any living space in order to examine his temperature habits as well as optimize his monthly electrical bill.

 Benefit Proposition

Our product offers customers to opportunity to save on their electrical bills. With the constant monitoring of temperatures in any room, the user is able to detect wasteful energy consumption as well as mismanaged consumption. This would allow the client to see if there are any problems with insulation, window sealing, or even poor daily habits that result in higher electricity bill such as leaving the heaters on while no one is home.  The app monitors any living space, and notifies the user if the temperature of said living space has exceeded the maximum value entered, as well as if it has dipped lower than the minima.

  Key Business Goals

The key to our business is for the app to be free with the purchase of a sensor.  We are retailing the sensors at 30$ each.  Having taken 350 hours to develop, at a rate of 25$/hour, the total cost of the app is 8750$.  Therefore, to break eve, we are required to sell 292 sensors.  This seems like a very reasonable target.  We are attributing 75 hours of work to upgrade and to maintain the app every month.  At our labor rate of 25$/hour, this results in an expense of 1875$.  The cost to upkeep a server is quoted at 250$ monthly, thus resulting in a total monthly expenditure of 2125$.  This would require 71 sensor sells per month, which again is a fairly manageable goal.   We are projecting 2500 sensor sales when the final product is delivered, resulting in a gross of 75 000$, which after expenses is a net of 40 750$. Reinvesting the money into the company is our main goal, thus we will be delivering a product with even more features and more functionalities in the near future.

 Target Market

Our target market consists of homeowners, landlords and renters.  Seeing as the market is very big, we believe we have a plethora of potential customers.  Another market that we are targeting is the restaurant market, potentially striking a deal with the Canadian Food Inspection Agency to monitor freezers temperature.

2- Product Backlog


Story ID Story Title Card Story Points Sprint Status Conversation Confirmation
BK-1 User Interface As a user, I would like the app to have a simple interface so that it is easy to understand and use. 10 Sprint 1 Completed I want the information to be easy to access. I don’t want the app to be hard to use. Simplistic UI with a simple display of information.
BK-2 User Privacy As a homeowner I want solemn control of the data the app provides so that there is no unwanted user accessing the data. 10 Sprint 1 Completed How private is this information? Will there be a chance someone unauthorized will gain access to it? Information should be private.
BK-3 User Accessibility As a user, I wouldn’t want someone to modify the temperature of a room so that there will be no unwanted increase in electrical bills. 10 Sprint 1 Completed Will I or someone else be able to change the temperature remotely? Limit remote access to the temperature and make sure there is no temperature altering feature.
BK-4 User Login As a user, I want to be able to create a new account from the application so that I can create as many accounts needed for my employees. 12 Sprint 1 Completed How will we create a registration page on the app? Will the server be able to handle it? Registration page with fields for username, password, password confirmation, first name and email address.
BK-5 User accessibility As a user I would like good connectivity with the database so that I can view the data anywhere I go. 20 Sprint 1 Completed I want to access the data on the go. Use a database to let the user access his data via internet.
BK-6 Fail Safe As a user I want the app to be fluid and bug free so that I can monitor my rooms. 14 Sprint 1 Completed I want a bug free program that won’t give errors. Require all fields to be filled prompt when need to input information. Limit access depending on the account.
BK-7 Device Management As a user, I would like to connect multiple sensors to the application so that I can monitor multiple rooms at once. 14 Sprint 2 Sprint 2 I want multiple sensors connected to the app for multiple room coverage. Add the sensors to the database. Name them accordingly. Group sensors into smaller sub-groups.
BK-8 Measurement Additions As a homeowner, I would like to know the humidity in the room so that I can take proper actions in case it is outside of my bounds. 10 Sprint 2 Sprint 2 Will I be able to see the humidity in the room? Add humidity option on the sensor. Find a limit for data transaction between app and database.
BK-9 App Accessibility As a user, I want the account to logout if the app is closed or is removed to not share my data with others. 4 Sprint 2 Sprint 2 I want protect my privacy by making sure the data is not accessible when the app is closed or removed from my device. Add a logout feature as well as an instant log-off when app closure or removal is detected.
BK-10 Refresh Rate As a user, I want live information on the room I am monitoring so that I can take the required actions in case the data goes over my boundaries. 6 Sprint 2 Sprint 2 How often should the temperature be recorded? Provide a sampling rate of 30 minutes.
BK-11 Data presentation As a user, I want to my sensors to stay mine so that no other account is allowed to register to them. 10 Sprint 2 Sprint 2 I want each individual sensor to be associated with one specific account. Provide a sensor registering feature where each sensor is attributed an ID and “locked” to a specified account.
BK-12 User accessibility As a user, I would like every account created for monitoring purposes to only have access to what I am allowing them to so that there is no conflict of privacy. 8 Sprint 2 Sprint 2 I want accounts to only access what I allow them to access. Creation on sensor network which can only be accessed by the users they are assigned to.
BK-13 Machine State As a user, I would like to know if the heater is on or off so that I can get an idea of how often the heater is on during a select period of time 10 Sprint 2 Sprint 2 I want to know how long my heater is on Create a function that allows the user to see if a heater is on(1) or off(0).
BK-14 Sensor Display As a user, I want to be able to rename the sensors after adding them and to group them by a group name so that it is easier to find the desired sensor when looking for information. 13 Sprint 2 Sprint 2 I want a nice display of all the sensors and to the ability to group them up. It will be easier to monitor regions of the house that way. Rename the sensors added. Implement a “create list”-like function where you can select specific sensors and add them to that list.
BK-15 Adding Sensors As a user, I want to be able to add sensors by their serial numbers so that adding sensors stays a simple activity. 8 Sprint 2 Sprint 2 I want sensors to be added to my account via their serial numbers since it is the easiest way to register the sensors. Create a registration system for the sensors where you can only register IDs with specific length (the length of the serial number of the sensors). Add them to the list of sensors available.
BK-16 Data Display As a user, I want to view my data for the last 24 hours, 3 days, 7 days and 30 days so that I can have a good understanding of my consumption. 15 Sprint 3 Sprint 3 I want to monitor my consumption over 1 day, 3 days, 7 days and 30 days. This will help me understand my electrical bills. Create functions that takes the data for the specified time(1,3,7,30 days) and display it as a list.
BK-17 Averaging Data As a user I want an average of the temperatures so that I can further monitor my consumption. 8 Sprint 3 Sprint 3 I want averages displayed for the temperature. In the case for 1 day, the average should be calculated every hour. 3 days every 3 hours, 7 days every 12 hours and 30 days every day. Create functions that will average out data depending on the selected input. They will also display the data for whatever timeframe is given.
BK-18 Graphing As a user, I want to view all my data in graph form for temperature and humidity by the intervals set previously so that it can be nicely presented to the users. 25 Sprint 3 Sprint 3 I want to add graphing as a functionality. Temperature is best presented in graph form, since it is easiest to monitor. We will make graphs compatible with the previous time periods discussed. Create graphing function. Implement graphs for specified times (1 day, 3 days, 7 days, 30 days).
BK-19 Temperature/Humidity swapping As a user, I want to be able to switch between humidity and temperature readings so that I can monitor both of them within 1 app. 12 Sprint 3 Sprint 3 I want to monitor both humidity and temperature in the app. I don’t want to have to change screens to do so. I want to be able to switch while in the app. Create a “switch” button that when pressed takes in the “other” data and creates the graphs and live temperature/humidity.
BK-20 Efficiency As a user I want to see the efficiencey of the heaters in a live view in the Machine State Section so that I know whether or not I need to increase or decrease temperature in order to maximize efficiency. 8 Sprint 3 Sprint 3 Efficiency statistics will allow me to maximize saving money. ??????????
BK-21 Sensor Account Sync As a user I want to see the sensor information by the name I set them too in registration so that I recognize which sensor is which. 12 Sprint 3 Sprint 3 Link sensor information to the specified account. When the user adds the sensor to the account and renames it, it should appear in the users account.
BK-22 Data Deletion As a user I want to be able to close my account and delete all the data the sensors stored so that everything remained private and no memory leak occurs. 12 Sprint 3 Sprint 3 The ability to remove sensors is a feature that is necessary. The deletion of all the data stored from that sensor or just all the data in general is a feature that is critical to this apps success. Add a function that allows sensor deletion. Prompt use if he is sure that he wants to delete the sensor and all of its data.
BK-23 Calendar Implentation (for graph) As a user, I want to select a specific date (or an interval) so that I can be able to monitor temperature/humidity change for a given date (or interval) 12 Future Not in sprint Implement a calendar feature which lets the user select a date (or an interval) and the display the graph based on that date selected. Limit calendar intervals (make the start year 2018). Make sure the calendar date translates correctly; 01/02/2018 is January 2 2018 and not February 1 2018. Make sure the selected date format meets the server’s date format.
BK-24 Control Heaters As a user, I would like to have an option where I can control my heaters through the apps so that I can control them from anywhere and save energy. 25 Future Not in sprint Implement the feature on the ESP32 board itself by adding an easy DIY switch that conforms to the public laws. The pins of the board determine the state (touching each other or seperated) Make sure it works properly. Make sure the ON feature does not act as OFF and vice-versa.
BK-25 Global Notification As a user, I would like to receive notifications (pop-up or email) if the temperature/humidity of my room drops/rises above a certain value so that I can save time and not check the app constantly. 25 Future Not in sprint Implement an email notification system and a pop-up. Let the user choose either or both. Make sure notifications are refreshed instantly with a slight delay (max 1 minute). Make sure emails can handle fast notifcations for critical purposes.
BK-26 QR/NFC Sensor Add Feature As a user, I want an easy way to add a sensor so that I would not spend time manually typing the sensor ID. 12 Future Not in sprint Implement an easy way to add the sensors; NFC or QR for phones that do not support NFC. Test the NFC functionality. Make sure the QRs generated are unique.
BK-27 Home Server Setup As a user, I want to setup the server at my place so that I can have my data under control. 25 Future Not in sprint Sell the customer a server (or let him use his own) and ease the setup. This would help reduce the cost and hence the sensor price. Create a generic server code and make it compatible with different devices.
BK-28 Sensor Brands As a startup, we want to brand our sensors so that we can advertise our products. 12 Future Not in sprint Create a product label for advertising. Make sure it’s permenant and cannot be removed easily by the customer.



 3- Design Document

3.1 -Login and Registration

3.2 –Home and Devices


3.3 –Adding Sensors and Grouping


3.4 –Live View and Graph


3.5 –Graph Functionality

3.6 -Efficiency


3.7 –Boundary Setup