Differences between revisions 8 and 9
Revision 8 as of 2018-02-20 08:18:48
Size: 2805
Editor: ?AndreaTrentini
Comment: moved item
Revision 9 as of 2018-02-21 02:37:49
Size: 2818
Editor: PaulWise
Comment: wireshark for capturing bluetooth packets
Deletions are marked like this. Additions are marked like this.
Line 33: Line 33:
   * Debian packages: `bluetooth`, `bluez-tools` and other bluetooth related packages depending on the future development choices    * Debian packages: `bluetooth`, `bluez-tools`, `wireshark` and other bluetooth related packages depending on the future development choices

Reverse engineering radiator bluetooth thermovalves

FIXME still DRAFT (allow me a couple of days to complete it)

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 "library" in form of shell scripts that can be combined to create other scripts 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 or Rust. 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: Daniel Pocock

  • Deliverables of the project:

    • debian package for the current (already developed) shell library (see http://sl-lab.it/dokuwiki/doku.php/tesi:reveng-termovalvole)

    • "best practice" guide for the reverse engineering process (packet analyzing, rev.eng. Android code, etc.), to add new valve protocols to the library
    • porting to other (more modern?) languages such as Go or Rust
    • doc translation into english (this would be done by the mentor, don't worry)
    • (if possible) integration into "domotics" projects such as home-assistant and openhab

  • Desirable skills:

    • critical thinking (!)

    • disciplined development skills
    • SCM tools (i.e. git)

  • What the intern will learn:

    • creating Debian packages
    • documenting code
    • unit testing
    • (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: