Overkiz API and Somfy API

Do you mean with modified manually → using a Somfy remote?

I thought that Somfy needs to provide that in their api and that at this moment it is not available.

When you start the Somfy app, Somfy is executing this command to update the states of all devices (because you could operate them with the remotes).

@martinst @tetienne
Apologies
I posted in the wrong forum.
I wanted to report my positive test of the local API

@oscylo How did you solve the issue with timeout() got an unexpected keyword argument ‘loop’?

just noticed because I set the new (2023.2) theme variables for the domain cover, that my RTS vertical jalouzien (UpDownScreen) are always unknown.

Now they are using assumed_state, and I am aware there is no positioning on these devices. However, should the not show open/closed when that is 100% the case?

Scherm­afbeelding 2023-01-27 om 12.26.58

Hi, what do you mean by theme variable? I didn’t see any PR recently touching the logic of our integration.

what I meant was we can now set

state-cover-[state]-color in our themes, see 2022.12 Color states are broken/unusable - #643 by Mariusthvdb

and by doing so, I discovered the unknown for my vertical blinds RTS
I seem to remember they did have open/closed before, so was wondering if that is supposed to be like this now

This is by design and has always been unknown. RTS devices don’t have any state. (default Home Assistant behavior).

@imick may I be so bold and as you directly - i just saw in the git source, that there is a support for the somfy thermostat?

Is this the IO version and already implemented? I am a little bit confused as my latest Information was that this is not yet planned?

I mean this one: Link

@linuxstony, not sure actually… They have many different IO thermostats. It looks like the ValveHeatingxxxx, which is not supported in Overkiz in core yet, but I don’t know.

Climate devices (thus thermostats) are not supported in local integration by the way. Somfy does not exposes them.

Hi there, currently I’m successfully running overkiz integration on a Cozytouch device for an Atlantic APC

but since then I got some other somfy IO devices installed (curtains & light) and would like to integrate them into my ha setup.

As for now I identified 2 possibilities:

  • Buy a tahoma switch and move everything on it (also unsure about my APC support) - expensive (200)
  • Buy a somfy connectivity kit which is much more moderate (~ 60 €) and well enough for the light & curtain management (my scenario are supposed to go into ha anyway).

But here come the issue, it would require to run 2 instances of overkiz or overkiz being able to manage 2 accounts/devices.

I’m currently doubtfull this is supported ootb but is it something that could be added as an improvement item ?

This is supported. Not sure if a Switch or Connectivity Kit will support your APC, one of the developers actually uses as Somfy hub and an Atlantic hub for this…

Ohhh nice, unexpected

my plan is to keep to cozytouch for APC and add a connectivity kit for other I/O devices.

I have this reference (actually i have 8)
i can se the temperature that is measured in the room but it seems that the setting of the requested temperature is not implemented yet

by looking at the diagnostic file of the Tahoma Switch, it seems however that everything is there to configure the device the same way than the somfy app does

I have no python knowledge, (30 years ago i was able to code in java, C++, Assembler… may be i should try to learn) but ready to test

     {
          "deviceURL": "io://****-****-9373/3000744#1",
          "available": true,
          "synced": true,
          "type": 1,
          "states": [
            {
              "type": 3,
              "name": "core:StatusState",
              "value": "available"
            },
            {
              "type": 3,
              "name": "core:DiscreteRSSILevelState",
              "value": "good"
            },
            {
              "type": 1,
              "name": "core:RSSILevelState",
              "value": 100
            },
            {
              "type": 3,
              "name": "core:OpenClosedValveState",
              "value": "open"
            },
            {
              "type": 3,
              "name": "core:OperatingModeState",
              "value": "manual"
            },
            {
              "type": 1,
              "name": "core:TargetRoomTemperatureState",
              "value": 20
            },
            {
              "type": 1,
              "name": "core:TargetTemperatureState",
              "value": 20
            },
            {
              "type": 3,
              "name": "io:CurrentHeatingModeState",
              "value": "manual"
            },
            {
              "type": 1,
              "name": "core:DerogatedTargetTemperatureState",
              "value": 20
            },
            {
              "type": 1,
              "name": "core:DerogationEndDateTimeState",
              "value": 1673960789000
            },
            {
              "type": 1,
              "name": "core:DerogationStartDateTimeState",
              "value": 1673960789000
            },
            {
              "type": 3,
              "name": "io:DerogationHeatingModeState",
              "value": "manual"
            },
            {
              "type": 3,
              "name": "io:DerogationTypeState",
              "value": "further_notice"
            },
            {
              "type": 1,
              "name": "io:ManualModeTargetTemperatureState",
              "value": 20
            },
            {
              "type": 1,
              "name": "core:BatteryLevelState",
              "value": 74
            },
            {
              "type": 3,
              "name": "io:ValveInstallationModeState",
              "value": "finished"
            },
            {
              "type": 1,
              "name": "core:ComfortRoomTemperatureState",
              "value": 21
            },
            {
              "type": 1,
              "name": "core:EcoTargetTemperatureState",
              "value": 19
            },
            {
              "type": 1,
              "name": "core:FrostProtectionRoomTemperatureState",
              "value": 8
            },
            {
              "type": 1,
              "name": "io:AwayModeTargetTemperatureState",
              "value": 17
            },
            {
              "type": 1,
              "name": "io:GeofencingModeTargetTemperatureState",
              "value": 20
            },
            {
              "type": 1,
              "name": "io:OpenWindowDetectedTargetTemperatureState",
              "value": 8
            },
            {
              "type": 3,
              "name": "core:ActiveTimeProgramState",
              "value": "none"
            },
            {
              "type": 1,
              "name": "core:MaxSetpointState",
              "value": 26
            },
            {
              "type": 1,
              "name": "core:MinSetpointState",
              "value": 5
            },
            {
              "type": 3,
              "name": "core:OpenWindowDetectionActivationState",
              "value": "active"
            },
            {
              "type": 1,
              "name": "core:TemperatureOffsetConfigurationState",
              "value": 0
            },
            {
              "type": 3,
              "name": "io:ByPassActivationState",
              "value": "disable"
            },
            {
              "type": 3,
              "name": "io:LockKeyActivationState",
              "value": "disable"
            },
            {
              "type": 11,
              "name": "core:TimeProgram1State",
              "value": {
                "sunday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "friday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "monday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "thursday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "tuesday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "wednesday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "saturday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": 11,
              "name": "core:TimeProgram2State",
              "value": {
                "sunday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "friday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "monday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "thursday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "tuesday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "wednesday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                },
                "saturday": {
                  "timeslots": [
                    {
                      "from": {
                        "minute": 0,
                        "hour": 0
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 6
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 6
                      },
                      "mode": "comfort",
                      "to": {
                        "minute": 0,
                        "hour": 21
                      }
                    },
                    {
                      "from": {
                        "minute": 0,
                        "hour": 21
                      },
                      "mode": "eco",
                      "to": {
                        "minute": 0,
                        "hour": 24
                      }
                    }
                  ]
                }
              }
            }
          ],
          "label": "** ** ** ** ** **",
          "subsystemId": 1,
          "attributes": [],
          "enabled": true,
          "controllableName": "io:HeatingValveIOComponent",
          "definition": {
            "states": [
              {
                "name": "core:StatusState"
              },
              {
                "name": "core:ActiveTimeProgramState"
              },
              {
                "name": "core:MaxSetpointState"
              },
              {
                "name": "core:MinSetpointState"
              },
              {
                "name": "core:OpenWindowDetectionActivationState"
              },
              {
                "name": "core:TemperatureOffsetConfigurationState"
              },
              {
                "name": "io:ByPassActivationState"
              },
              {
                "name": "io:LockKeyActivationState"
              },
              {
                "name": "core:TimeProgram2State"
              },
              {
                "name": "core:BatteryLevelState"
              },
              {
                "name": "core:SensorDefectState"
              },
              {
                "name": "io:ValveInstallationModeState"
              },
              {
                "name": "core:DerogatedTargetTemperatureState"
              },
              {
                "name": "core:DerogationEndDateTimeState"
              },
              {
                "name": "core:DerogationStartDateTimeState"
              },
              {
                "name": "io:DerogationHeatingModeState"
              },
              {
                "name": "io:DerogationTypeState"
              },
              {
                "name": "io:ManualModeTargetTemperatureState"
              },
              {
                "name": "core:ComfortRoomTemperatureState"
              },
              {
                "name": "core:EcoTargetTemperatureState"
              },
              {
                "name": "core:FrostProtectionRoomTemperatureState"
              },
              {
                "name": "io:AwayModeTargetTemperatureState"
              },
              {
                "name": "io:GeofencingModeTargetTemperatureState"
              },
              {
                "name": "io:OpenWindowDetectedTargetTemperatureState"
              },
              {
                "name": "core:NameState"
              },
              {
                "name": "core:OpenClosedValveState"
              },
              {
                "name": "core:OperatingModeState"
              },
              {
                "name": "core:TargetRoomTemperatureState"
              },
              {
                "name": "core:TargetTemperatureState"
              },
              {
                "name": "io:CurrentHeatingModeState"
              },
              {
                "name": "core:TimeProgram1State"
              },
              {
                "name": "core:DiscreteRSSILevelState"
              },
              {
                "name": "core:RSSILevelState"
              }
            ],
            "widgetName": "ValveHeatingTemperatureInterface",
            "attributes": [],
            "uiClass": "HeatingSystem",
            "commands": [
              {
                "commandName": "startIdentify",
                "nparams": 0
              },
              {
                "commandName": "stopIdentify",
                "nparams": 0
              },
              {
                "commandName": "exitDerogation",
                "nparams": 0
              },
              {
                "nparams": 4,
                "commandName": "setAllModeTemperatures",
                "paramsSig": "p1,p2,p3,p4"
              },
              {
                "commandName": "getName",
                "nparams": 0
              },
              {
                "nparams": 2,
                "commandName": "setDerogation",
                "paramsSig": "p1,p2"
              },
              {
                "nparams": 1,
                "commandName": "setName",
                "paramsSig": "p1"
              },
              {
                "commandName": "identify",
                "nparams": 0
              },
              {
                "nparams": 1,
                "commandName": "wink",
                "paramsSig": "p1"
              },
              {
                "nparams": 2,
                "commandName": "setTimeProgramById",
                "paramsSig": "p1,p2"
              },
              {
                "nparams": 1,
                "commandName": "setValveSettings",
                "paramsSig": "p1"
              },
              {
                "nparams": 1,
                "commandName": "advancedRefresh",
                "paramsSig": "p1"
              },
              {
                "nparams": 1,
                "commandName": "delayedStopIdentify",
                "paramsSig": "p1"
              }
            ],
            "type": "ACTUATOR"
          }
        },

We can indeed support this device (ValveHeatingTemperatureInterface), however we would need time to write an implementation, someone to test and reviewers on the core repository.

You could start with creating an issue in core, where you included your diagnostics and share which features your model supports via the original app. (so which presets / settings etc.).

1 Like

Alright - then lets try to get this up and running - I am fed up with my wife complaining that we have two seperate “smarthome-boxes” that fiddle around with temperature valves e.g. TahomaBox for IO and Homeassistant for the “old” ZWave Valves.

I want HA only for obvious reasons :slight_smile:

I will try to get all the information for @imick and the awesome volunteer team from my end and write a summary today evening.

I have opened a request here (i hope it is on the right place)

The additional functions are described there (in addition to existing functions that already allow us to get the local temperature and other technical data)

Thanks to tell me what i should do from there

1 Like

Best would be an issue on GitHub, including your diagnostics information.

1 Like

Done

2 Likes

Last time I was searching for some wireless scene switches which could replace my Somfy Smoove IO wall units. I had found this Moes switch:

Aubess Tuya Zigbee Smart Scene Switch 4 Gang 12 Scene Switch Push Button Controller Works With Smart Life App Zigbee Gateway - Automation Modules - AliExpress

The problem with this switch is that it is not very fast with sending the zigbee command. Also I read a lot of stories that the batteries are drained very fast (2 months).

Because I have everywhere Hue Lights in my house I thought maybee the Hue Dimmer Switches are an option.

So I have replaced 2 Somfy Smoove IO units for 2 Hue Dimmer Switches V2 for testing the coming days.

To use the KIS (keep it simple) principle :blush:

  • The Hue Dimmer Switch sends zigbee signal to an Ikea Zigbee repeater
  • My raspbery pi 4 has a Dresden Conbee II stick
  • Node-Red checks which dimmer is sending the command and sends an open/close/stop/etc… command to a cover template depending which button and which action (short / long press release)
  • In the cover template the system sends a window/door status request to a microcontroller (ESP8266) that has reed contacts connected to the window/door
  • When window/door is closed, the command is send to the real cover. When it is open it will ignore the requested cover command and nothing happens.

I still have to place labels on the hue buttons. For now I have created the next functions to the buttons:

  • Top button: Short press release → cover open (normal speed)
  • Top button: Long press release → cover open (discrete speed)
  • Second/third button → stop cover (I will give it also some specific position function like the “My” button)
  • Bottom button: Short press release → cover close (normal speed)
  • Bottom button: Long press release → cover close (discrete speed)

I have to say that it works quite nice. There is offcourse some lag. This will be improced with a local api. Also i’m going to change my microcontroller to a version with ethernet instead of wifi.

When everything stays working perfect, I will change all my Somfy smoove IO units by those Hue dimmers.

Pros:

  • When controlling the covers with the Hue Dimmer, Home Assistant has directly the new state of the covers (with the Somfy Smoove IO (which sends commands to the motor instead of the hub), Home Assistant has the wrong states)
  • I can execute all kind of safety logic before really controlling the cover.
  • In Home Assistant I see the state of the battery

Neg:

  • There are mutiple players which could have failure
  • When there is no internet connection, the hue dimmers could not operate the covers (is solved with a local api/homekit and I have also some Somfy Situo IO units which are connected directly to the motors).

But when somebody knows another wireless switch, I’m still interested. At this moment I don’t have buy all the other switches that I “have” to replace.

2 Likes

@imick Hi, I have a question: With the Overkiz Cloud Integration, I can also see lamps that have been integrated into Tahoma Switch via philps Hue and Somfy Protect. with the local developer API integration, these lamps are no longer retrieved. would it be possible to get the bulbs from the Local Developer API as well?

Thanks for an answer.