Differences between revisions 17 and 18
Revision 17 as of 2018-03-02 14:25:53
Size: 3263
Editor: ?AndreaTrentini
Comment:
Revision 18 as of 2018-03-27 06:04:41
Size: 3281
Editor: ?AndreaTrentini
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
 * '''Deliverables of the project''':  * '''Deliverables of the project''' (in random order):

Reverse engineering radiator bluetooth thermovalves

Description of the project: Today's radiators can be controlled by programmable valves (thermostats), some valves sport a BLE (Bluetooth Low Energy) interface allowing a computer (or, more commonly, a smartphone) to program them "remotely" (at BLE ranges). The communication protocol is proprietary but can be reverse engineered, and it was. At Università di Milano (Italy) I supported a thesis that succeeded in completely reverse engineering (by sniffing BLE and by analyzing Android code). The thesis produced a GPL-licensed library in the form of a bunch of "single function" shell scripts that can be combined to create other (more complex) scripts for IoT applications and the BNF formalization of the protocol. This project proposal mainly aims at integrating the library into a full and well documented Debian package and (if possible) to port the software to a more modern language such as Go, Rust, Scala, Java or Ruby (but you can suggest more!). Moreover, it should produce a "best practice" guide for future developers interested in adding new valve protocols on the market.

  • Confirmed Mentor: Andrea Trentini (Università degli Studi di Milano, Italy)

  • How to contact the mentor: http://atrent.it

  • Confirmed co-mentors: Giovanni Biscuolo

  • Deliverables of the project (in random order):

    • debian package for the current (already developed) shell library
    • "best practice" guide for the reverse engineering process (packet analyzing, rev.eng. Android code, etc.) to add new valve protocols to the library, the guide should be as general as possible to let developers apply the process to other bluetooth devices (communicating with Android apps), NOTE: device firmware reverse engineering is NOT a goal of this project
    • porting to other (more modern?) languages such as Go, Rust, Java, Scala or Ruby
    • doc translation into english (this would be done by the mentor, don't worry)
    • integration into "domotics" projects such as home-assistant and openhab

  • Desirable skills:

    • critical thinking (!)

    • disciplined development skills

    • SCM tools (i.e. git, nothing else)

  • What the intern will learn:

    • creating Debian packages
    • documenting code
    • unit testing
    • advanced shell scripting
    • BLE (Bluetooth Low Energy) protocols and related Debian packages
    • Go/Rust/Scala/Java/Ruby or other modern programming language
    • (maybe, depending on the language chosen) Object Oriented programming
  • Application tasks:

    • git commit, merge, solve conflicts, etc.
    • command line operations (filesystem, processes, etc.)
    • create small shell script
    • NOT using the mouse
  • Related projects:

    • the current state of development, in italian

    • Debian packages (some of these will be a dependency for this project): bluetooth, bluez-tools, wireshark and other bluetooth related packages depending on the future development choices