Testers needed for Netatmo climate (multiple thermostats or valves)

Hey,

Just updated to 0.84.3 + last version on github and i no longer have this problem of 127.5°c through homekit. So i guess it s perfect for me.

Thx

Hi, pyatmo library commit has been merged (release 1.5), so now I can release a testing version which has been submitted to HA dev.

You have to replace custom_components/netatmo.py with:

And also replace custom_components/climate/netatmo.py with:

And, this is to replace the netatmo component, so you have to change your configuration file. You can use automatic discovery by just putting (modify accordingly if you are not using secrets):

netatmo:
  api_key: !secret netatmo_api_key
  secret_key: !secret netatmo_secret_key
  username: !secret netatmo_user
  password: !secret netatmo_pass

If you want to specify the home and room list, you should set discovery to False and put:

climate:
  platform: netatmo
  home: home_name
  rooms:
    - room_name1
    - room_name2

Please also be advised that the names of the operation modes have been changed to make a better adoption with lovelace UI.

45
From left to right, the 6 icons mean: schedule (auto), manual, away (eco), frost guard(cool), max (heat), off.
57

2 Likes

So with this we geht rid of netatmo2, right?

You can first make sure the new one works for you and then remove netatmo2.

Great news!
I already added it.
The first issue I have, is that all thermostats are doubled. But this doesn’t have anything todo with your improvments, because my netatmo presences is listed two times since the begining.
So thanks for your development!

Perfect, now i can see all the parameter.

Only one question, every how much time refresh the valves temperature and states?

I had this “doubled” issue. For me it disappeared after I removed climate:netatmo from configuration.yaml. I guess the automatic discovery and climate finds twice, but I’m not sure about it.

Five minutes by default, but each time you set something, this interval limit is disabled once.

Yes, i’d resolved with the same editing, because the component auto discovered the climate and when we recall with climate: platform in the configuration file we had the informations duplicate

Ok, but now during my test one valve drop under the min temp and i see that the boiler turning on. On the netatmo energy app and on the thermostat i can see that one valve required to turn on the boiler but on hassio i continue to see the idle state and i cannot update manually

in the netatmo.py file present in the custom_components i see this value:

MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=10)

and in the netatmo.py file present in the climate i see this value:

MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=300)

which are the differences?

works perfect, thanks again to @Baosong_Shan

Hello,

Thank you for your work but I got an error when trying your new version of custom component
It’s not Hass.io but home assistant in Docker.

Also, I am French speaking and have some special characters like èé, perhaps it could be the issue.

I tried with this version : Home Assistant 0.85.0.dev0

2018-12-19 11:29:22 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform netatmo


Traceback (most recent call last):


  File "/usr/src/app/homeassistant/helpers/entity_platform.py", line 128, in _async_setup_platform


    SLOW_SETUP_MAX_WAIT, loop=hass.loop)


  File "/usr/local/lib/python3.6/asyncio/tasks.py", line 358, in wait_for


    return fut.result()


  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run


    result = self.fn(*self.args, **self.kwargs)


  File "/config/custom_components/climate/netatmo.py", line 71, in setup_platform


    for home in home_data.get_home_names():


  File "/config/custom_components/climate/netatmo.py", line 291, in get_home_names


    self.setup()


  File "/config/custom_components/climate/netatmo.py", line 301, in setup


    self.homedata = pyatmo.HomeData(self.auth)


  File "/config/deps/lib/python3.6/site-packages/smart_home/Thermostat.py", line 64, in __init__


    for t in range(len(self.rawData[i]['therm_schedules'])):


KeyError: 'therm_schedules'

The first one is for generic Netatmo components, in this file, for the camera especially.

The second one is the override for Netatmo thermostats. In fact it could be more frequent I think.

Thanks for your help on testing :slight_smile:

I don’t think it is because docker, because I myself am using docker. Either it is a temporary communication issue, or something related to the special characters. It would be helpful if you turn on DEBUG output and send me the detailed log.

Thank you for your quick answer !

I restarted it with debug :

logger:
  default: debug


2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.binary_sensor, platform=netatmo, discovered=>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.climate, platform=netatmo, discovered=>

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.components.sensor] Setting up sensor.netatmo

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.loader] Loaded binary_sensor.netatmo from homeassistant.components.binary_sensor.netatmo

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.loader] Loaded climate.netatmo from custom_components.climate.netatmo

2018-12-20 09:33:43 WARNING (MainThread) [homeassistant.loader] You are using a custom component for climate.netatmo which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.camera, platform=netatmo, discovered=>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=group.weather, old_state=None, new_state=<state group.weather=unknown; entity_id=('sensor.date', 'sensor.time', 'sensor.weather_symbol', 'sensor.netatmo_outdoor_temperature', 'sensor.netatmo_outdoor_max_temp', 'sensor.netatmo_outdoor_min_temp', 'sensor.netatmo_outdoor_humidity', 'sensor.weather_precipitation', 'sensor.weather_wind_speed', 'sun.sun'), order=10, friendly_name=Météo @ 2018-12-20T09:33:43.052673+01:00>>

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.loader] Loaded camera.netatmo from homeassistant.components.camera.netatmo

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.components.binary_sensor] Setting up binary_sensor.netatmo

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.components.climate] Setting up climate.netatmo

2018-12-20 09:33:43 DEBUG (SyncWorker_19) [custom_components.climate.netatmo] Starting to setup platform climate.netatmo...

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.components.camera] Setting up camera.netatmo

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=group.netatmo, old_state=<state group.netatmo=unknown; entity_id=('climate.thermostat', 'sensor.netatmo_indoor_temperature', 'automation.famille_away_set_planning', 'automation.famille_home_set_on'), order=8, control=hidden, friendly_name=Thermostat @ 2018-12-20T09:33:43.030347+01:00>, new_state=<state group.netatmo=off; entity_id=('climate.thermostat', 'sensor.netatmo_indoor_temperature', 'automation.famille_away_set_planning', 'automation.famille_home_set_on'), order=8, control=hidden, friendly_name=Thermostat @ 2018-12-20T09:33:43.166869+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=group.default_view, old_state=<state group.default_view=unknown; entity_id=('group.tv_salon', 'group.grenier', 'group.lights', 'group.netatmo'), order=0, view=True, friendly_name=default_view, icon=mdi:home, hidden=True @ 2018-12-20T09:33:42.931087+01:00>, new_state=<state group.default_view=off; entity_id=('group.tv_salon', 'group.grenier', 'group.lights', 'group.netatmo'), order=0, view=True, friendly_name=default_view, icon=mdi:home, hidden=True @ 2018-12-20T09:33:43.170928+01:00>>

2018-12-20 09:33:43 DEBUG (SyncWorker_12) [homeassistant.components.sensor.netatmo] WeatherStationData detected!

2018-12-20 09:33:43 INFO (SyncWorker_12) [homeassistant.components.sensor.netatmo] NetAtmo refresh interval reset to 348 seconds

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_pressure, old_state=None, new_state=<state sensor.netatmo_indoor_pressure=1021.8; unit_of_measurement=mbar, friendly_name=Pression Atmosphérique, icon=mdi:gauge @ 2018-12-20T09:33:43.361675+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_max_temp, old_state=None, new_state=<state sensor.netatmo_outdoor_max_temp=6.8; unit_of_measurement=°C, friendly_name=Température Max., icon=mdi:thermometer @ 2018-12-20T09:33:43.363244+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_humidity, old_state=None, new_state=<state sensor.netatmo_indoor_humidity=51; unit_of_measurement=%, friendly_name=Humidité Ambiante, device_class=humidity @ 2018-12-20T09:33:43.364709+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_humidity, old_state=None, new_state=<state sensor.netatmo_outdoor_humidity=100; unit_of_measurement=%, friendly_name=Taux d'humidité, device_class=humidity @ 2018-12-20T09:33:43.366772+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_wifi, old_state=None, new_state=<state sensor.netatmo_indoor_wifi=High; unit_of_measurement=, friendly_name=Netatmo Indoor Wifi, icon=mdi:wifi @ 2018-12-20T09:33:43.368304+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_min_temp, old_state=None, new_state=<state sensor.netatmo_indoor_min_temp=18.3; unit_of_measurement=°C, friendly_name=Netatmo Indoor Min Temp., icon=mdi:thermometer @ 2018-12-20T09:33:43.369717+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_temperature, old_state=None, new_state=<state sensor.netatmo_indoor_temperature=18.3; unit_of_measurement=°C, friendly_name=Température, device_class=temperature @ 2018-12-20T09:33:43.371227+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_temperature, old_state=None, new_state=<state sensor.netatmo_outdoor_temperature=6.6; unit_of_measurement=°C, friendly_name=Température Extérieure, device_class=temperature @ 2018-12-20T09:33:43.373276+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_radio, old_state=None, new_state=<state sensor.netatmo_outdoor_radio=High; unit_of_measurement=, friendly_name=Netatmo Outdoor Radio, icon=mdi:signal @ 2018-12-20T09:33:43.375679+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_max_temp, old_state=None, new_state=<state sensor.netatmo_indoor_max_temp=20.8; unit_of_measurement=°C, friendly_name=Netatmo Indoor Max Temp., icon=mdi:thermometer @ 2018-12-20T09:33:43.378928+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_battery, old_state=None, new_state=<state sensor.netatmo_outdoor_battery=Full; unit_of_measurement=, friendly_name=Netatmo Outdoor Battery, icon=mdi:battery @ 2018-12-20T09:33:43.382697+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_outdoor_min_temp, old_state=None, new_state=<state sensor.netatmo_outdoor_min_temp=5; unit_of_measurement=°C, friendly_name=Température Min., icon=mdi:thermometer @ 2018-12-20T09:33:43.383985+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_noise, old_state=None, new_state=<state sensor.netatmo_indoor_noise=35; unit_of_measurement=dB, friendly_name=Bruit Ambiant, icon=mdi:volume-high @ 2018-12-20T09:33:43.385349+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.netatmo_indoor_co2, old_state=None, new_state=<state sensor.netatmo_indoor_co2=640; unit_of_measurement=ppm, friendly_name=Taux de Co2, icon=mdi:cloud @ 2018-12-20T09:33:43.386773+01:00>>

2018-12-20 09:33:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.sensor, platform=netatmo, discovered=>

2018-12-20 09:33:43 INFO (MainThread) [homeassistant.components.sensor] Setting up sensor.netatmo

2018-12-20 09:33:43 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform netatmo

File "/config/custom_components/climate/netatmo.py", line 71, in setup_platform

File "/config/custom_components/climate/netatmo.py", line 291, in get_home_names

File "/config/custom_components/climate/netatmo.py", line 301, in setup

Excuse me because the thread is really long but do I need to update pyatmo too ?

Edit : Tested with pyatmo 1.5 and same issue
Edit2 : As the key Error is KeyError: ‘therm_schedules’ I tried the following :

  • Set my language to English US on Netatmo website : Not OK
  • I had 2 custom temperature set with a space in their name and renamed those without space or special char : Not OK

If you have any idea of test I could try, please share with me :slight_smile:

Please try to download and run the testing python script, and paste me the output.

Don’t forget to replace in the script your username/password/client_id/client_secret.

Thank you !

Here is the result (launched from within my PRD docker without your files but pyatmo 1.5)

FYI I have 1 Thermostat, 6 valves, 1 weather station and 2 presence cameras from Netatmo

As the error mention “KeyError: ‘therm_schedules’” perhaps it’s the length of that value returned ?

root@a06cce66a6f4:/config# python testnetatmoapi.py
Your access token is: 542452ee1c7759b05253f648|c9afb859cc5d13e70e54072237f05a91
Your refresh token is: 542452ee1c7759b05253f648|ab75fccea0220104e7187f8e7e969725
Your scopes are: ['read_station', 'read_camera', 'access_camera', 'read_thermostat', 'write_thermostat', 'read_presence', 'access_presence']
{'access_token': '542452ee1c7759b05253f648|c9afb859cc5d13e70e54072237f05a91'}
{'homes': [{'id': '5851438b2b2b468cee8bbbd3', 'name': 'Cambron', 'altitude': 108, 'coordinates': [5.5666999816895, 50.63330078125], 'country': 'BE', 'timezone': 'Europe/Brussels', 'rooms': [{'id': '1080857', 'name': 'Porte dâentrée', 'type': 'custom', 'module_ids': ['70:ee:50:26:d5:72'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 0}, {'id': '2897875409', 'name': 'Buanderie', 'type': 'custom', 'module_ids': ['70:ee:50:27:bf:4e'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 0}], 'modules': [{'id': '70:ee:50:26:d5:72', 'type': 'NOC', 'name': 'Porte Entree', 'setup_date': 1481720715, 'room_id': '1080857'}, {'id': '70:ee:50:27:bf:4e', 'type': 'NOC', 'name': 'Porte Buanderie', 'setup_date': 1483041679, 'room_id': '2897875409'}], 'therm_setpoint_default_duration': 180, 'therm_mode': 'schedule'}, {'id': '597b5f25e8ede14e278b602f', 'name': 'Cambron', 'altitude': 65, 'coordinates': [3.9344523348877, 50.579109246332], 'country': 'BE', 'timezone': 'Europe/Brussels', 'rooms': [{'id': '1942610123', 'name': 'SDB', 'type': 'bathroom', 'module_ids': ['09:00:00:01:1d:9f'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '3401426623', 'name': 'Salon', 'type': 'livingroom', 'module_ids': ['04:00:00:0d:51:04', '09:00:00:01:1a:3c', '09:00:00:01:1a:b0', '09:00:00:01:1b:5f'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '577576931', 'name': 'Entrée', 'type': 'lobby', 'module_ids': ['09:00:00:00:2d:76'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '2882922966', 'name': 'Théo', 'type': 'bedroom', 'module_ids': ['09:00:00:03:df:8e'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '38075077', 'name': 'Julien', 'type': 'bedroom', 'module_ids': ['09:00:00:03:db:25'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '3156509982', 'name': 'Parents', 'type': 'bedroom', 'module_ids': ['09:00:00:04:20:3f'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}, {'id': '879663239', 'name': 'Palier', 'type': 'custom', 'module_ids': ['09:00:00:03:d5:3c'], 'measure_offset_NAPlug_temperature': 0, 'measure_offset_NAPlug_estimated_temperature': 1}], 'modules': [{'id': '70:ee:50:0d:25:c8', 'type': 'NAPlug', 'name': 'Relais', 'setup_date': 1517659811, 'modules_bridged': ['04:00:00:0d:51:04', '09:00:00:00:2d:76', '09:00:00:01:1a:3c', '09:00:00:01:1a:b0', '09:00:00:01:1b:5f', '09:00:00:01:1d:9f', '09:00:00:03:df:8e', '09:00:00:03:db:25', '09:00:00:04:20:3f', '09:00:00:03:d5:3c']}, {'id': '04:00:00:0d:51:04', 'type': 'NATherm1', 'name': 'Thermostat', 'setup_date': 1517659811, 'room_id': '3401426623', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:00:2d:76', 'type': 'NRV', 'name': 'Vanne Entrée', 'setup_date': 1517664303, 'room_id': '577576931', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:01:1a:3c', 'type': 'NRV', 'name': 'Vanne Cuisine', 'setup_date': 1517660913, 'room_id': '3401426623', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:01:1a:b0', 'type': 'NRV', 'name': 'Vanne Salon', 'setup_date': 1517660910, 'room_id': '3401426623', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:01:1b:5f', 'type': 'NRV', 'name': 'Vanne Bureau', 'setup_date': 1517660865, 'room_id': '3401426623', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:01:1d:9f', 'type': 'NRV', 'name': 'Vanne SDB', 'setup_date': 1517661184, 'room_id': '1942610123', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:03:df:8e', 'type': 'NRV', 'name': 'Vanne Théo', 'setup_date': 1538559879, 'room_id': '2882922966', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:03:db:25', 'type': 'NRV', 'name': 'Vanne Julien', 'setup_date': 1538562060, 'room_id': '38075077', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:04:20:3f', 'type': 'NRV', 'name': 'Vanne Parents', 'setup_date': 1538562965, 'room_id': '3156509982', 'bridge': '70:ee:50:0d:25:c8'}, {'id': '09:00:00:03:d5:3c', 'type': 'NRV', 'name': 'Vanne Palier', 'setup_date': 1538563680, 'room_id': '879663239', 'bridge': '70:ee:50:0d:25:c8'}], 'therm_schedules': [{'timetable': [{'zone_id': 1, 'm_offset': 0}, {'zone_id': 3, 'm_offset': 360}, {'zone_id': 2, 'm_offset': 435}, {'zone_id': 0, 'm_offset': 1110}, {'zone_id': 1, 'm_offset': 1350}, {'zone_id': 3, 'm_offset': 1800}, {'zone_id': 2, 'm_offset': 1875}, {'zone_id': 0, 'm_offset': 2550}, {'zone_id': 1, 'm_offset': 2790}, {'zone_id': 3, 'm_offset': 3240}, {'zone_id': 2, 'm_offset': 3315}, {'zone_id': 0, 'm_offset': 3990}, {'zone_id': 1, 'm_offset': 4230}, {'zone_id': 3, 'm_offset': 4680}, {'zone_id': 2, 'm_offset': 4755}, {'zone_id': 0, 'm_offset': 5430}, {'zone_id': 1, 'm_offset': 5670}, {'zone_id': 3, 'm_offset': 6120}, {'zone_id': 2, 'm_offset': 6195}, {'zone_id': 0, 'm_offset': 6870}, {'zone_id': 1, 'm_offset': 7110}, {'zone_id': 3, 'm_offset': 7560}, {'zone_id': 2, 'm_offset': 7635}, {'zone_id': 0, 'm_offset': 8310}, {'zone_id': 1, 'm_offset': 8550}, {'zone_id': 3, 'm_offset': 9000}, {'zone_id': 2, 'm_offset': 9075}, {'zone_id': 0, 'm_offset': 9750}, {'zone_id': 1, 'm_offset': 9990}], 'zones': [{'name': 'Confort', 'id': 0, 'type': 0, 'rooms_temp': [{'room_id': '577576931', 'temp': 16}, {'room_id': '3401426623', 'temp': 19}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '879663239', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}]}, {'name': 'Nuit', 'id': 1, 'type': 1, 'rooms_temp': [{'room_id': '577576931', 'temp': 15}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '879663239', 'temp': 16}, {'room_id': '3401426623', 'temp': 16}]}, {'name': 'Jour', 'id': 2, 'type': 4, 'rooms_temp': [{'room_id': '577576931', 'temp': 10}, {'room_id': '3401426623', 'temp': 15}, {'room_id': '2882922966', 'temp': 10}, {'room_id': '38075077', 'temp': 10}, {'room_id': '3156509982', 'temp': 10}, {'room_id': '879663239', 'temp': 10}, {'room_id': '1942610123', 'temp': 10}]}, {'name': 'Matin', 'id': 3, 'type': 4, 'rooms_temp': [{'room_id': '38075077', 'temp': 19}, {'room_id': '577576931', 'temp': 16}, {'room_id': '879663239', 'temp': 19}, {'room_id': '1942610123', 'temp': 19}, {'room_id': '2882922966', 'temp': 19}, {'room_id': '3156509982', 'temp': 19}, {'room_id': '3401426623', 'temp': 19}]}, {'name': 'Ãco', 'id': 5, 'type': 5, 'rooms_temp': [{'room_id': '3401426623', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}, {'room_id': '577576931', 'temp': 16}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '879663239', 'temp': 16}]}], 'name': 'Standard', 'default': False, 'away_temp': 15, 'hg_temp': 7, 'id': '559e41b7fe775917598b7032', 'selected': True, 'type': 'therm'}], 'therm_setpoint_default_duration': 30, 'schedules': [{'timetable': [{'zone_id': 1, 'm_offset': 0}, {'zone_id': 3, 'm_offset': 360}, {'zone_id': 2, 'm_offset': 435}, {'zone_id': 0, 'm_offset': 1110}, {'zone_id': 1, 'm_offset': 1350}, {'zone_id': 3, 'm_offset': 1800}, {'zone_id': 2, 'm_offset': 1875}, {'zone_id': 0, 'm_offset': 2550}, {'zone_id': 1, 'm_offset': 2790}, {'zone_id': 3, 'm_offset': 3240}, {'zone_id': 2, 'm_offset': 3315}, {'zone_id': 0, 'm_offset': 3990}, {'zone_id': 1, 'm_offset': 4230}, {'zone_id': 3, 'm_offset': 4680}, {'zone_id': 2, 'm_offset': 4755}, {'zone_id': 0, 'm_offset': 5430}, {'zone_id': 1, 'm_offset': 5670}, {'zone_id': 3, 'm_offset': 6120}, {'zone_id': 2, 'm_offset': 6195}, {'zone_id': 0, 'm_offset': 6870}, {'zone_id': 1, 'm_offset': 7110}, {'zone_id': 3, 'm_offset': 7560}, {'zone_id': 2, 'm_offset': 7635}, {'zone_id': 0, 'm_offset': 8310}, {'zone_id': 1, 'm_offset': 8550}, {'zone_id': 3, 'm_offset': 9000}, {'zone_id': 2, 'm_offset': 9075}, {'zone_id': 0, 'm_offset': 9750}, {'zone_id': 1, 'm_offset': 9990}], 'zones': [{'name': 'Confort', 'id': 0, 'type': 0, 'rooms_temp': [{'room_id': '577576931', 'temp': 16}, {'room_id': '3401426623', 'temp': 19}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '879663239', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}], 'rooms': [{'id': '577576931', 'therm_setpoint_temperature': 16}, {'id': '3401426623', 'therm_setpoint_temperature': 19}, {'id': '2882922966', 'therm_setpoint_temperature': 16}, {'id': '38075077', 'therm_setpoint_temperature': 16}, {'id': '3156509982', 'therm_setpoint_temperature': 16}, {'id': '879663239', 'therm_setpoint_temperature': 16}, {'id': '1942610123', 'therm_setpoint_temperature': 16}]}, {'name': 'Nuit', 'id': 1, 'type': 1, 'rooms_temp': [{'room_id': '577576931', 'temp': 15}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '879663239', 'temp': 16}, {'room_id': '3401426623', 'temp': 16}], 'rooms': [{'id': '577576931', 'therm_setpoint_temperature': 15}, {'id': '38075077', 'therm_setpoint_temperature': 16}, {'id': '3156509982', 'therm_setpoint_temperature': 16}, {'id': '1942610123', 'therm_setpoint_temperature': 16}, {'id': '2882922966', 'therm_setpoint_temperature': 16}, {'id': '879663239', 'therm_setpoint_temperature': 16}, {'id': '3401426623', 'therm_setpoint_temperature': 16}]}, {'name': 'Jour', 'id': 2, 'type': 4, 'rooms_temp': [{'room_id': '577576931', 'temp': 10}, {'room_id': '3401426623', 'temp': 15}, {'room_id': '2882922966', 'temp': 10}, {'room_id': '38075077', 'temp': 10}, {'room_id': '3156509982', 'temp': 10}, {'room_id': '879663239', 'temp': 10}, {'room_id': '1942610123', 'temp': 10}], 'rooms': [{'id': '577576931', 'therm_setpoint_temperature': 10}, {'id': '3401426623', 'therm_setpoint_temperature': 15}, {'id': '2882922966', 'therm_setpoint_temperature': 10}, {'id': '38075077', 'therm_setpoint_temperature': 10}, {'id': '3156509982', 'therm_setpoint_temperature': 10}, {'id': '879663239', 'therm_setpoint_temperature': 10}, {'id': '1942610123', 'therm_setpoint_temperature': 10}]}, {'name': 'Matin', 'id': 3, 'type': 4, 'rooms_temp': [{'room_id': '38075077', 'temp': 19}, {'room_id': '577576931', 'temp': 16}, {'room_id': '879663239', 'temp': 19}, {'room_id': '1942610123', 'temp': 19}, {'room_id': '2882922966', 'temp': 19}, {'room_id': '3156509982', 'temp': 19}, {'room_id': '3401426623', 'temp': 19}], 'rooms': [{'id': '38075077', 'therm_setpoint_temperature': 19}, {'id': '577576931', 'therm_setpoint_temperature': 16}, {'id': '879663239', 'therm_setpoint_temperature': 19}, {'id': '1942610123', 'therm_setpoint_temperature': 19}, {'id': '2882922966', 'therm_setpoint_temperature': 19}, {'id': '3156509982', 'therm_setpoint_temperature': 19}, {'id': '3401426623', 'therm_setpoint_temperature': 19}]}, {'name': 'Ãco', 'id': 5, 'type': 5, 'rooms_temp': [{'room_id': '3401426623', 'temp': 16}, {'room_id': '1942610123', 'temp': 16}, {'room_id': '577576931', 'temp': 16}, {'room_id': '2882922966', 'temp': 16}, {'room_id': '38075077', 'temp': 16}, {'room_id': '3156509982', 'temp': 16}, {'room_id': '879663239', 'temp': 16}], 'rooms': [{'id': '3401426623', 'therm_setpoint_temperature': 16}, {'id': '1942610123', 'therm_setpoint_temperature': 16}, {'id': '577576931', 'therm_setpoint_temperature': 16}, {'id': '2882922966', 'therm_setpoint_temperature': 16}, {'id': '38075077', 'therm_setpoint_temperature': 16}, {'id': '3156509982', 'therm_setpoint_temperature': 16}, {'id': '879663239', 'therm_setpoint_temperature': 16}]}], 'name': 'Standard', 'default': False, 'away_temp': 15, 'hg_temp': 7, 'id': '559e41b7fe775917598b7032', 'selected': True, 'type': 'therm'}], 'therm_mode': 'schedule'}], 'user': {'email': '[email protected]', 'language': 'en-US', 'locale': 'fr-FR', 'feel_like_algorithm': 0, 'unit_pressure': 0, 'unit_system': 0, 'unit_wind': 0, 'id': '542452ee1c7759b05253f648'}}
5851438b2b2b468cee8bbbd3

I understand the reason: you have two homes, one of them is for thermostat/valves, and the other is not, which caused the key error. I need to patch this in the pyatmo module. Stay tuned.