Toon (eneco) integration with Home Assistant

Hi everybody, I am afraid that toon is no more.

No server is available to handle this request.
</body></html>

The official component in home assistant uses toonlib which is based on the unofficial api which apparently is closed as most of you realized. It was communicate that that might happen this year and now it is.

Please try the unofficial toon component that uses toonapilib which uses the official api. That means that people will need to create developer accounts and get keys and set things up. We should probably move towards moving the official api library to the official toon component in HA.

Please note the custom component that boltgolt is mentioning above and use that. Provide feedback if any problem exists. If everything is good, we need to replace the component in HA.

I’m up and running again with the custom component. :blush:

I installed the custom component on top of 86.4 but it doesn’t create any thermostat entities. Hassio appears to be using the “disfunctional” component even with the custom krocat component installed.

Have the same experience on Hassio 87.1: still the old Toon errors.

I placed the custom files in:

config\custom_components\toon.py
config\custom_components\climate\toon.py
config\custom_components\sensor\toon.py
config\custom_components\switch\toon.py

but I still get the error after I restart Hassio

My Operations (auto, heat, eco and cool) are not changing all the time on the toon device. Where can I debug this?

Eneco has stopped with toon op afstand since 12 feb 2019. To bad.

New Toon module is in the making, see https://github.com/home-assistant/home-assistant/issues/21010

1 Like

is it possible to add a rooted toon?

1 Like

0.88 broke my custom Toon component. I’m back on 87.1. Does somebody know how to resolve this. I read in the 0.88 blogpost it maybe has something to do with a new filestructure or the location of the custom files.

I followed the guide in the release notes and fixed the library from Krocat. Stucture need to be:

  • sensor/toon.py --> toon/sensor.py
  • climate/toon.py --> toon/climate.py
  • switch/toon.py --> toon/switch.py
  • toon.py --> toon/_init_.py

After a restart everything should work again.

1 Like

Thx! That did the trick :sunglasses:

Hi @hiddit, if I could get access to a rooted toon,I could add it to toonapilib and eventually support it in a component. There has been some discussions in quby to actually officially open up their devices for local usage, not requiring rooting but they are still on going.

What is the status on this? Is it worth buying a (rooted) toon?

is anyone else using the normal (built in HA) component and receiving this error on HA boot?

TargetHeatingCoolingState: value=0 is an invalid value

Updatet HA last week and Toon disappeared, log files says that creditials are invalid. Which is not true, tested and validated my credentials on the Toon Android application.

Hi Karsie,

i have the same issue. Reset all accounts but it keeps telling the credentials are incorrect.
This happend after updating to 0.111(.3).

Hope someone knows why and how to solve

It will possible fixed in the next release. See the following link for more information: https://github.com/home-assistant/core/pull/36952

okey, great. Do you perhaps know when this will be ?

after digging some more in the logs i see i it is not happy with the redirect uri. Is this also addressed ?


2020-06-23 20:21:16 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/config/config_entries/flow/f127126fbff24a4690b9098d18cd1c44 to 127.0.0.1 (auth: True)
2020-06-23 20:21:16 DEBUG (SyncWorker_6) [toonapilib.Toon] Using patched request for url https://api.toon.eu//authorize
2020-06-23 20:21:16 DEBUG (SyncWorker_6) [toonapilib.Toon] Did not receive valid json, response was:
         <!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Invalid redirect_uri</title>
 
        <style>
            @import url(https://fonts.googleapis.com/css?family=Open+Sans);
            @import url(https://fonts.googleapis.com/css?family=Roboto);
 
            *:focus {
                outline: none;
            }
 
            body {
                background-color: #fff;
                color: #43484d;
                font-family: 'FFClanWebNews', 'Helvetica Neue', 'Helvetica', 'Roboto', 'Arial', sans-serif;
                font-size: 1.4rem;
                margin: 0;
            }
            main {
                margin:42px auto;
                text-align:center;
                width: 480px;
            }
            a, a:active  {
                color: #D7242A;
                text-decoration: none;
            }
            a:visited {
                color: #701317;
            }
            .page-header {
                background-color: #D7242A;
                height: 10px;
                
                background-position: center;
            }
 
            h1 {
                font-family: 'Open Sans', sans-serif;
                font-size: 20px;
            }
 
            h2 {
                font-size: 16px;
            }
 
            .viesgo {
                color: #D7242A;
                font-weight: 900;
            }
            .field {
                margin:20px auto;
                width:340px;
            }
            .error {
                color:red;
                display:none;
                font-weight:bold;
            }
            .error.true {
                display:block;
            }
            label {
                display:block;
                font-size: 12px;
                text-align:left;
            }
 
            input,
            select {
                border:1px solid #a0b1b9;
                font-size:14px;
                height:32px;
                margin-top:4px;
                width:100%;
            }
            input:not([type=submit]) {
                background-color: transparent;
                border: 0;
                border-bottom: 1px solid #414141;
                height: 32px;
            }
            input:not([type=submit]):focus {
                border-bottom-color: #cccccc;
            }
 
            ::-webkit-input-placeholder {
                font-style: italic;
            }
 
            :-moz-placeholder { /* Firefox 18- */
                font-style: italic;
            }
 
            ::-moz-placeholder {  /* Firefox 19+ */
                font-style: italic;
            }
 
            :-ms-input-placeholder {
                font-style: italic;
            }
 
            .button {
                background-color: #D7242A;
                border:0;
                box-shadow: 0 4px 0 0 #701317;
                color: #ffffff;
                cursor: pointer;
                height: 50px;
                line-height: 50px;
                margin: 30px auto;
                padding:0;
                width: 280px;
            }
 
            @media (min-width: 322px) and (max-width: 480px) {
                .page-content {
                    margin:2%;
                    width:96%;
                }
                .field {
                    margin:20px 10%;
                    width:80%;
                }
            }
            @media (max-width: 321px) {
                .page-content {
                    margin:2%;
                    width:96%;
                }
                .field {
                    margin:20px 0;
                    width:280px;
                }
            }
        </style>
    </head>
    <body>
        <header class="page-header"></header>
        <main class="page-content">
            <h1>Developer hint:</h1>
            <p>The requested redirect_uri does not match any of the whitelisted redirect_uris on the Toon developer page.</p>
            <p>Make sure to allow the requested redirect_uri on your registered Toon app in the <a href="https://developer.toon.eu/">developer pages</a></p>
            <p>Multiple redirect_uris can be used, separated by a comma.</p>
        </main>
    </body>
</html>

If everything goes well, it will be released on Wednesday 1 july.

2 Likes