Maybe is your girlfriend or just your Thermostat!
Thermal Energy Saving System, these words enclose the main goals of this project. Started as a game and some experimentation it has become a real side project that trying to provide a cheap, easy and smart thermal system for every user who wants to try it out for free.
The entire project is designed to work on Android Things, used to collect and organize all sensor data and send it to Firebase. The thermal data collected by the sensors is obtained by exploiting the Aqara Gateway from Xiaomi. This Gateway provides a developer mode that exposes into the LAN some open port to communicate with it and retrieve the sensors data. On the other side, Firebase collects the organized dataset and provide a back-end structure to the mobile application.
The main focus of this project is to use and play with all the latest best technologies available for Android Development. TESS is entirely written in Kotlin and it uses lots of useful libraries, that is right now a defacto standard. Some examples:
- Android Architecture Components
- Coroutines
- Koin (Dependency Injection)
- Arrow (Functional Programming)
- Room (Database)
- Firebase Firestone (Remote Database)
- Mockk (Mocking Library)
- KotlinTest (Test Framework)
-
Create a base structure for the project -
Receive the Multicast messages from the Aqara Gateway -
Communicate with the Gateway via UDP messages -
Create a mechanism that can automatically detect the paired sensors and identify those - Create a first back-end structure based on Firebase technologies
- Start Mobile App development
- Organize the data collected from the Aqara Gateway and store it in Firebase Firestone
- Integrate the Mobile App with the back-end
- And so on...
Feel free to send suggestions, improve existing functionality, report issues, propose new features and contribute in every way you want. Since this project is still in its very early stages, if your change is substantial, please raise an issue first to discuss it.
Copyright 2019
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.