Supervisors info:
Τσίλης Εμμανουήλ, Επίκουρος Καθηγητής, Τμήμα Φυσικής, ΕΚΠΑ
Ρείσης Διονύσιος, Αναπληρωτής Καθηγητής, Τμήμα Φυσικής. ΕΚΠΑ
Αλεξάκης Γεώργιος, Επίκουρος Καθηγητής, Τμήμα Φυσικής, ΕΚΠΑ
Summary:
This diploma thesis aimed at implementing a home remote control system using an Android application. This system is based on a Raspberry Pi server that is used to handle electrical and electronic devices as well as to inform the application user about the conditions at home using the appropriate sensors .
Initially, was made a description of the server running on a Raspberry Pi and implemented using Flask, a Python Micro web framework that was chosen because unlike other web frameworks, such as django, it was not loaded from the beginning with all the libraries and tools which are used to create a web app but would have no use in creating the server for the current system. The server uses the Raspberry GPIO to communicate with the transmitters, receivers and sensors used to control the devices and inform the user through the application.
Then a description of the Android app was made, which on its home screen allows the user to select one of the system's functions. These functions include information on temperature and humidity in the home, IR device handling, RF device handling, and information on whether movement has been detected in the house by the corresponding sensor. Additionally, every 5 times that the sensor detects movement, the user is sent a notification on the sole condition of being connected to the internet, without having to have an application open.
Subsequently, the implementation of the four system functions at both server and application level was described in detail. Specifically, the implementation of the REST API on the server was analyzed to properly handle the http requests it receives from the application, which uses the Android Volley Library to send the requests. In addition, at the server another thread is created running parallel to the routing used for the REST API, as it needs to constantly check the state of the motion sensor to send a notification to the user if necessary but also to be able to inform how many times movement has been detected in recent hours.
Finally, in order for the server functions to be accessed from everywhere via the Android application, Port forwarding is implemented to the router so that the requests that come for the server on our IP are forwarded to it. However, because our router's IP, basically our Internet address, is constantly changing due to the use of DCHP by ISPs for IP address assignment, we are also using Dynamic DNS services. With these services, it is possible to access the server from anywhere, regardless of changes to the IP address of the router, by using a specific domain name that we get from these services.
Keywords:
Android, Flask, Raspberry Pi, REST API, Firebase Cloud Messaging(FCM)