/MyTotalComfort

Interact with Honeywell MyTotalComfort-compatible Thermostats.

Primary LanguagePHP

My Total Comfort

Travis (.org) PHP from Travis config Coveralls github

This is a PHP library for working with Honeywell's Total Connect Comfort interface (TCC). It authenticates using user credentials and can provide data available through the web interface and more.

Compatible with PHP >=5.6

Install with Composer:

composer require tenth/my-total-comfort
composer install --no-dev

(There are notable dev dependencies that you really should only install if you want to auto-generate documentation.)

Cloning and Documenting

Please clone and contribute, or report bugs should you find them.

This repository has a script (makedocs.php) intended to automatically generate and publish documentation changes based on doc blocks. You can find that documentation in the Wiki. As far as the repository is concerned, the documentation directory is a submodule. To clone everything all in one shot, add the --recursive switch to your clone command:

git clone --recursive https://github.com/TenthPres/MyTotalComfort.git

There's currently an issue when generating documentation in PHP 7.4 that makes the formatting very poor. Other versions seem to work fine, and the package itself also works fine in 7.4.

Disclaimers

The contributors to this project are not affiliated with Honeywell.

Examples

Log In

This Example is required before any of the other examples below will work.

require_once 'vendor/autoload.php';

$tcc = new \Tenth\MyTotalComfort("email@example.com", "password");

List Conditions

Current Temperature and Set Points for all Zones in a Location.

require_once 'vendor/autoload.php';

$tcc = new \Tenth\MyTotalComfort("email@example.com", "password");

$locationId = 1234567;

echo "<table>";
echo "<tr>
    <td>id</td>
    <td>name</td>
    <td>heatSet</td>
    <td>dispTemp</td>
    <td>coolSet</td>
</tr>";

foreach ($tcc->getZonesByLocation($locationId) as $zi => $zone) {
    echo "<tr>
        <td>{$zone->id}</td>
        <td><a href='https://www.mytotalconnectcomfort.com/portal/Device/Control/{$zone->id}'>{$zone->name}</a></td>
        <td>{$zone->heatSetpoint}</td>
        <td>{$zone->dispTemperature}</td>
        <td>{$zone->coolSetpoint}</td>
    </tr>";
}

echo "</table>";

Change Set Points

require_once 'vendor/autoload.php';

$tcc = new \Tenth\MyTotalComfort("email@example.com", "password");

$zoneId = 1234567;

$z = $tcc->getZone($zoneId);

$z->heatSetpoint = 70;
$z->coolSetpoint = 74;