This article describes a TDD (Test Driven Development) approach to implement a Finite State Machine (FSM) using PHP+Laravel. However, such method is general and could be used in the programming language of your choice.
I released on GitHub a PHP library for querying and editing data on the Tado Thermostat System. It is integrated in Laravel 5.x for quick setup in this excellent framework.