Netatmo Thermostat Schedule

It´s possible that I expressed myself wrong. I want call this services in automation.

Of course you can do that.

In UI:

In yaml:

service: climate.set_preset_mode
entity_id: climate.netatmo_wohnzimmer
data:
  preset_mode: schedule
1 Like

Just ask outside the thermostat. Yesterday I received a camera from netatmo. Today I noticed that integration only works in dev integration. Is cloud integration also planned?

In theory cameras could also work with the cloud link and that is also the plan for the future. Right now we are facing issues with webhook events that have to be resolved before opening up the cloud link supported devices for cameras. Otherwise the functionality would be very limited and would not result in a good user experience.

In other words, we are working on this.

1 Like

Hello,
I would like to retrieve the schedules from the netatmo app to an input select. But the app sends me codes, and I would like to translate them into simple names as presented in the netatmo app.
If anyone can help me or enlighten me for the data_template of the input_select.

Thank you

PS: Sorry for my english (thank you google)

  ## Enregistrement du planning des températures
  - id: "automation_netatmo_1"
    alias: "netatmo_event Planning de temperature"
    trigger:
      - platform: event
        event_type: netatmo_event
        event_data:
          type: "schedule"
    action:
      - service: input_select.select_option
        target:
          entity_id: input_select.netatmo_planning_select
        data_template:
          option: >-
            {% if {{ trigger.event.data["data"]["schedule_id"] }} = "5fd919d6566c66474e3c2f6d" %}
              Planning normal
            {% elif {{ trigger.event.data["data"]["schedule_id"] }} = "5fda84e07f7a4c7098753535" %}
              vacances a la maison
            {% else %}
              erreur automation_netatmo_1
            {% endif %}

The code below works perfectly but does not offer me common schedule names

      - service: input_select.select_option
        target:
          entity_id: input_select.netatmo_planning_select
        data:
          option: '{{ trigger.event.data["data"]["schedule_id"] }}'
      - service: notify.notification_texte
        data:
          message: passage au planning {{ trigger.event.data["data"]["schedule_id"] }}

The climate entity has an attribute selected_schedule. If you only need to retrieve them once, this should be sufficient, no?

The goal is to no longer use the Netatmo app.
And we would select the desired type of schedule directly in homeassistant (via an input_select): Normal, vacances a la maison, teletravail.
Since the netatmo.set_schedule service does not work, it does not work with the name I thought we should use the ID

image

I am not sure if I understand the issue but netatmo.set_schedule works fine as far as I can tell.

Thank you for your help. But when I test the service, it gives me an error. So I thought we should use the schedule_id

image

2021-02-25 12:05:45 ERROR (SyncWorker_36) [homeassistant.components.netatmo.climate] You passed an invalid schedule

Are you sure that schedule exists?

I’m sure the schedule exists.

the webhook does not return a schedule_name, but only schedul_id

[image]

Événement 0 déclenché 7:48:
{
“event_type”: “netatmo_event”,
“data”: {
“type”: “schedule”,
“data”: {
“user_id”: “5f4ce5c369232000622e1aa8”,
“user”: {
“id”: “5f4ce5c369232000622e1aa8”,
“email”: “[email protected]
},
“home_id”: “5fd919d6566c66474e3c2f6c”,
“event_type”: “schedule”,
“schedule_id”: “600602e60180ba5fbf12f1ee”,
“previous_schedule_id”: “5fda84e07f7a4c7098753535”,
“push_type”: “home_event_changed”
}
},
“origin”: “LOCAL”,
“time_fired”: “2021-02-27T06:48:18.395412+00:00”,
“context”: {
“id”: “9837d9a20238bcda32df6b3675aef674”,
“parent_id”: null,
“user_id”: null
}
}

Maybe I’m targeting the wrong device. At home I have a thermostat and valves. and with netatmo.set_schedule I send only to one device and not to the whole “system”

To be sure. with the climate netatmo we have 3 services:

  • climate.set_temperature: Sends a temperature in manual boost over a period defined in the application type: set_point
    Réponse du Webhook

{
“event_type”: “netatmo_event”,
“data”: {
“type”: “set_point”,
“data”: {
“user_id”: “5f4ce5c369232000622e1aa8”,
“user”: {
“id”: “5f4ce5c369232000622e1aa8”,
“email”: “[email protected]
},
“home_id”: “5fd919d6566c66474e3c2f6c”,
“room_id”: “3220156309”,
“home”: {
“id”: “5fd919d6566c66474e3c2f6c”,
“name”: “Rochefort”,
“country”: “FR”,
“rooms”: [
{
“id”: “3220156309”,
“name”: “Cuisine”,
“type”: “kitchen”,
“therm_setpoint_mode”: “manual”,
“therm_setpoint_temperature”: 20.5,
“therm_setpoint_end_time”: 1614419700
}
],
“modules”: [
{
“id”: “09:00:00:14:92:ec”,
“name”: “Cuisine Fenetre”,
“type”: “NRV”
},
{
“id”: “09:00:00:14:93:31”,
“name”: “Cuisine Porte”,
“type”: “NRV”
}
]
},
“mode”: “manual”,
“event_type”: “set_point”,
“temperature”: 20.5,
“push_type”: “display_change”
}
},
“origin”: “LOCAL”,
“time_fired”: “2021-02-27T06:57:48.119264+00:00”,
“context”: {
“id”: “9edf6d153130d2702e710595caf5fdd7”,
“parent_id”: null,
“user_id”: null
}
}

  • climate.preset.mode : General operating mode setting : Type: therm_mode
    preset_modes: away / boost / Frost Guard / Schedule

  reponse du webhook:

{
“event_type”: “netatmo_event”,
“data”: {
“type”: “therm_mode”,
“data”: {
“user_id”: “5f4ce5c369232000622e1aa8”,
“user”: {
“id”: “5f4ce5c369232000622e1aa8”,
“email”: “[email protected]
},
“home_id”: “5fd919d6566c66474e3c2f6c”,
“event_type”: “therm_mode”,
“home”: {
“id”: “5fd919d6566c66474e3c2f6c”,
“therm_mode”: “away”
},
“mode”: “away”,
“previous_mode”: “schedule”,
“push_type”: “home_event_changed”
}
},
“origin”: “LOCAL”,
“time_fired”: “2021-02-27T07:03:54.361161+00:00”,
“context”: {
“id”: “b1a3493620a6c4a5da7d411203ab9ac2”,
“parent_id”: null,
“user_id”: null
}
}

  • And the third ( netatmo.set_schedule) is for the change of schedule recorded in the netatmo application

{
“event_type”: “netatmo_event”,
“data”: {
“type”: “schedule”,
“data”: {
“user_id”: “5f4ce5c369232000622e1aa8”,
“user”: {
“id”: “5f4ce5c369232000622e1aa8”,
“email”: “[email protected]
},
“home_id”: “5fd919d6566c66474e3c2f6c”,
“event_type”: “schedule”,
“schedule_id”: “5fd919d6566c66474e3c2f6d”,
“previous_schedule_id”: “5fda84e07f7a4c7098753535”,
“push_type”: “home_event_changed”
}
},
“origin”: “LOCAL”,
“time_fired”: “2021-02-27T07:09:20.763485+00:00”,
“context”: {
“id”: “a41f999a68482ab31636c11d11211042”,
“parent_id”: null,
“user_id”: null
}
}

And I do with or without space, with or without capital letter I always have:

2021-02-27 08:17:21 ERROR (SyncWorker_21) [homeassistant.components.netatmo.climate] You passed an invalid schedule
2021-02-27 08:19:08 ERROR (SyncWorker_22) [homeassistant.components.netatmo.climate] You passed an invalid schedule
2021-02-27 08:19:29 ERROR (SyncWorker_6) [homeassistant.components.netatmo.climate] You passed an invalid schedule
2021-02-27 08:20:45 ERROR (SyncWorker_17) [homeassistant.components.netatmo.climate] You passed an invalid schedule
2021-02-27 08:21:05 ERROR (SyncWorker_32) [homeassistant.components.netatmo.climate] You passed an invalid schedule

[image]

Yes, I know it returns the ID. But the integration knows the matching names for the IDs. I am certain that the name doesn’t match the internal name. I’ll have a think how to expose them within HA so you don’t have to guess.

1 Like

@cgtobi that would be great, cause i have the same problem, and even looked through the code on github, to see that the code matched the name given to an id :sweat_smile:

But no matter what i try, i alway get an error with wrong schedule name :confused:

Please go to Open your Home Assistant instance and show your state developer tools. and search for your Netatmo climate device. This should give you the currently selected schedule.

Example:
grafik

That way you can find the valid name for your desired schedule.

1 Like

Hi,

i have a similar issue with the set_schedule service.
In my dev tools, when I select the Netatmo entities I have this :

preset_mode: Schedule
selected_schedule: Standard
friendly_name: Netatmo Salon

But when I’m doing this service call :

service: netatmo.set_schedule
data:
  schedule_name: Standard
  entity_id: climate.netatmo_salon

I have the following error log

pyatmo.exceptions.NoSchedule: 606e035b18439246ab32c715 is not a valid schedule id

I don’t know how the Netatmo API works, but I guess there is an internal ID for the schedule and I should use it instead of the schedule name ? Any idea how to find it ?

This is currently broken and should be fixed in the next bug fix release (probably 2021.5.2).

1 Like

Hi @cgtobi, thanks for your answer (and for your contribution on Netatmo integration).

Is this PR the fix you are mentioning ? It appears that it was merge on 2015.5.1, which is already the version I use.

1 Like

No, the fixes regarding the schedule issues is Bump pyatmo to 4.2.3 by cgtobi · Pull Request #50801 · home-assistant/core · GitHub.

1 Like

Great, I’ll follow this PR thanks :slight_smile:

1 Like

Hi, I just want to say that it works great with 2021.5.5 now. Thanks a lot for maintaining this integration :slight_smile:

2 Likes