Overkiz API and Somfy API

Hi there
As I had trouble connecting to Somfy TaHoma in the last days (seems their server was down Inbetween ) and by that I couldn’t handle my Somfy devices during that time, I am curios whether the direct local connection to the TaHoma hub is still coming and whether there is a rough timeline for that.
I don’t want to put up any pressure, I am actually glad that there are people working on all those integrations I use, as I couldn’t do that at all. However would be nice to know what’s in the pipeline.
Best regards
Karl

That worked for me too!
Thank you

Hi!
It just work fine with me with this equipment:
Outside front gate (io:DiscreteGateOpenerIOComponent)
Garage door (io:DiscreteGarageOpenerWithPartialPositionIOComponent)
2 somfy covers (io:RollerShutterWithLowSpeedManagementIOComponent)
4 roof window Velux Covers (io:RollerShutterVeluxIOComponent)
1 motorised roof window Velux (io:WindowOpenerVeluxIOComponent)
1 sun screen (rts:HorizontalAwningRTSComponent)
all working with a Tahoma Switch
this integration is installed on a seperated Home Assistant Instance.

To be continued
Looking forward to seeing this added to core

Thanks for your hard work gents

[EDIT] I forgot to say that during the installation I am proposed several Tahoma devices, all with same PIN; I just chose the first one

Your devices shoulder be already supported within HA core

They are and I use it already
But it’s not local.
so if the state of a roller (or else) is modified manually, the status is updated with some delay in HA, depending on the polling frequency.

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.