[APP][Pro] Somfy Tahoma & Connexoon (v3.0.35, test v4.0.0)

First, I would like to thank Lennart Kuijs for making this app many years ago. I have found it extremely useful and it inspired me to write some of my own apps. However, Lennart no longer has the spare time to maintain the app, so he has handed the reins over to me.

I hope to bring the app up to date with Athoms and Node.js latest standards plus add support for new devices that users have connected to their hub.

I have released my first version of the app to the Athom store at version 2.0.0 to make it easier to see the transition point.
This version has support for new devices plus it uses a more modern communication library that is smaller and faster.

The app currently supports over 100 different devices including:

  • IO vertical exterior blinds
  • IO roller shutters
  • IO horizontal awnings
  • IO exterior venetian blinds
  • Velux IO roof windows
  • Velux IO blinds
  • Velux IO roller shutters
  • Sunis wirefree IO sensor
  • Thermis wirefree IO sensor
  • Opening Detector IO sensor
  • TaHoma scenarios
  • Somfy One Alarm
  • Outdoor Camera Light Controller
  • Enocean Window Handle (requires Enocean USB module)
  • Somfy receiver IZYMO io shutter
  • IO motion sensor
  • IO vertical interior blind
  • IO garage door
  • IO horizontal awnings with silent mode
  • RTS interior curtains
  • RTS vertical blind
  • RTS interior venetian blind
  • IO Pergola
  • IO Dimmable Light
  • Several Hue Lights
  • Pilot Wire Programmer
  • Atlanta Heating System
  • RTS Exterior Blind
  • KeyGo remote
  • Atlantic Main Zone Controller
  • Atlantic Electric Heater
  • Radiator Valve
  • RTDS Water Sensor
  • Sliding Gate
  • RTS Horzontal Awning

Getting Started
Once you have installed the app you can start adding devices. The first time you add a device you will need to enter your Somfy username and password to connect to your Somfy account.

The app uses polling to fetch device status information. It is recommended that you keep the default polling interval of 30 seconds. The app will automatically boost this to 3 seconds during the control phase of a device to get status updates.

Requesting new features / devices
On the Homey Pro, there is a features that makes it easier to collect the information required for new devices and locate any problems. These features are found in the Apps section for the Somfy Tahoma & Connexoon app by taping on the Configure Application,

The main feature there is the Device Log tab.

This is where you can gather the information form your system that contains the data I need to add new devices. I have been very careful to ensure that any personal information has been removed so it is safe to post the information.

To capture the data, tap on the Get Log button and wait for the list below it to fill with data.
Then copy the data from the list box and send it to me in a PM on here.
There is also a Send Log button that emails the data you see directly to me, however the information I receive dose not identify you so I will not be able to reply. Therefore, please follow up with a message on here or in GitHub (Issues · AdyRock/com.somfy.tahoma · GitHub)
The main advantage of sending me the log is I can feed that back in to a simulator page which allows me to do some basic testing.

You will also see the Information tab here. If you are having problems with the app then switch Information the on (blue tick), wait for a few minutes until the problem has occurred and the log has gathered some data and then tap on the Send Log button to send the information to me.

Device Settings
Another feature that I have just added to version 2.0.2 is the option to reverse the direction of the controls. This is per device and is access by taping on the gear in the top right corner of the device screens and then tap on Advanced Settings.

The Invert Up / Down settings changes the direction of the Up / Stop / Down buttons so I you covers move up when you press down and down when you press up then toggle this option. This also changes the flows so they match the buttons.

The Invert Position setting changes the direction of the slider control and the move to position flow cards.

If you have any requests for new features or have found a bug please let me know by either a PM, posting below or create an issue on GitHub. I will do my best to help you but please remember I do this in my spare time for fun so I might not be able to respond straight away.

Updates
One of the new features is the tile goes dark when the covers are closed and taping on the tile moves the cover to the opposite position to provide quick open / close control.

Version 2.0.2.

  • Urgent: Fixed an issue that could prevent a new access token being obtained.
  • Added options to invert the position and Up / Down functions.

Version 2.0.3

  • This fixes an issue with the reverse direction of Up / Down buttons option.
  • It also has an option to invert the logic of the tile action / display.

Version 2.0.5

  • Added option to select Somfy server.
  • Added option to select OAuth login method
  • Big rewrite of network functions to convert to async so it is easier to track operations.

Version 2.0.6

  • Fixed checks for login failure.
  • Converted more functions to async
  • Fixed Logout button.
  • Clear out cookies and headers when logging out.
  • Prevent race condition with data sync and logout.
  • Display a more appropriate message when adding devices before logging in.
  • The login information is now displayed in the ‘Error’ log even though it’s not an error. I probably need to rename that now :slight_smile:

Version 2.0.7

  • Changed \setup endpoint to individual fetches of states in compliance with the email from Somfy.

Version 2.0.8

  • implemented Event method of refreshing capabilities.

Version 2.0.9 * Added more logging for the events to try and see why they are not working.

Version 2.0.10

  • Fixed missing return data after reauthenticating.

Version 2.0.11

  • Added flags to control start up sequence.

Version 2.0.12

  • Fixed variable name error in app init that prevented full initialisation.

Version 2.0.13

  • changed global exception handler output to hopefully show more information.

Version 2.0.14

  • Fixed erroneous conversion of Open / Closed state from event to an integer.

Version 2.0.15

  • Fixed event value issue with opening sensor and light controller.
  • Add option to toggle Information log off/on (default is off).

Version 2.0.16

  • Now prevents excessive login attempts. Maximum 5 attempts in 10 seconds. If blocked more than 3 times in a row then login is blocked for 5 minutes. Hopefully this should prevent the account being temporarily blocked and if it does get blocked it will allow time to recover. These figures are just a guess so they might need tweaking.

Version 2.0.17

  • Updated Dutch translations.

Version 2.1.0

  • Version number aligned to show a bigger updated and submitted for release to stable.

Version 2.1.1

  • Fixes a crash on Homey version 4.1.0 and lower.

Version 2.1.2
*Fixed an issue with renewing expired access token.

Version 2.1.3
*Login method is now selected automatically.

Version 2.1.4
*Added a flow card to switch the polling on and off.

Version 2.1.5

  • Added flow card to change sync speed.
  • Forced refresh of status if login token expires.
  • Fix for idle state when cover is partially open

Version 2.1.6

  • Added setting to switch off polling.
  • Changes to polling mode and sync speed now show in app settings.
  • Added Boost mode to temporarily increase polling speed when a cover command is sent.
  • Added support for io:SimpleBioclimaticPergolaIOComponent

Version 2.1.7
Added support for

  • hue:GenericExtendedColorLightHUEComponent,
  • hue:HueLuxHUEComponent,
  • hue:ExtendedColorLightCandleHUEComponent,
  • hue:LightStripsPlusHUEComponent,
  • hue:ColorTemperatureLightBulbHUEComponent,
  • io:DimmableLightIOComponent

Version 2.1.8

  • Changed Sync Speed to Sync Interval.
  • Limited size of Information log.
  • Added io:DiscreteGarageOpenerWithPartialPositionIOComponent
  • My position value in Device and flow tag if reported by the device.

Version 2.1.9

  • Added io:AwningReceiverUnoIOComponent.
  • Added rts:GarageDoor4TRTSComponent.
  • Added rts:SlidingGateOpener4TRTSComponent.

Version 2.1.10

  • Fixed crash when adding new rts:GarageDoor4TRTSComponent or rts:SlidingGateOpener4TRTSComponent device.

Version 2.1.11

  • Added io:LightMicroModuleSomfyIOComponent,.
  • Added rts:LightRTSComponent.
  • Fixed dim and on/off cancelling each other.
  • Improved boost sync to capture new command events when session had timed out / disconnected.

Version 2.1.12

  • Delay sync flow actions if sync is currently boosted.
  • Auto login method is now active all the time and not just when the credentials are saved

Version 2.1.14

  • Updated node.js libraries to latest versions.

Version 2.1.15

  • Major changes to login with a different way of passing data to axios.
  • Other changes to the way the app retries failed log in.
  • Auto login method back to only detecting the best method when the credentials are saved.
  • Log in attempts restricted to 2 in 20 seconds and 6 in 5 minutes.

Version 2.1.16

  • Fix rts:LightRTSComponent and io:LightMicroModuleSomfyIOComponent controllable names.

Version 2.1.17

  • Stopped rts:LightRTSComponent and io:LightMicroModuleSomfyIOComponent devices form send On command when dim set.
  • Added ovp:SomfyPilotWireHeatingInterfaceOVPComponent and ovp:SomfyPilotWireTemperatureSensorOVPComponent.

Version 2.1.18

  • Added rts:RollerShutterRTSComponent.

Version 2.1.19

  • Potential fix for failed login at start up.
  • Added logout when app closed (during app update, etc).

Version 2.1.20

  • Fixed an error during OAuth login

Version 2.1.21

  • Added support for rts:CurtainRTSComponent

Version 2.1.22

  • Fix for the recently added rts:RollerShutterRTSComponent and rts:CurtainRTSComponent

Version 2.1.23

  • Added io:OnOffIOComponent and myfox:HomeKeeperProAlarmController.
  • Provides success feedback when sending logs.

Version 2.1.24

  • Failed to upload due to as sever issue.

Version 2.1.25

  • Added rtds:RTDSSmokeSensor, rtds:RTDSContactSensor and rtds:RTDSMotionSensor

Version 2.1.26

  • Added rts:ExteriorVenetianBlindRTSComponent and set tilt position for exterior venetian blind

Version 2.1.27

  • Added trigger and action flow cards for tilt function of the exterior venetian blind.

Version 2.1.28

  • Increased minimum polling interval to 30 seconds to comply with Somfy’s new conditions of use.
  • Added an ‘Is Moving’ condition card to IO window cover devices. This only works when the move command was sent by Homey.

Version 2.1.30

  • Fix Is Moving condition for other IO covers.

Version 2.1.31

  • The Poll for status updates action card will now start the polling immediately if possible, without breaking the 30 second rule.
  • Added ‘Once’ option to the Poll for status updates action card.
  • Changed lower limit on Polling Interval action card to 30 seconds.

Version 2.1.32

  • Added the flow ID to the error message in the log.

Version 2.1.33

  • Fixed Motion has changed trigger.

Version 2.1.34

  • Added support for io smoke detectors and remote control.

Version 2.1.35

  • Added support for EnOceanOnOffLight.

Version 2.1.36

  • Added support for hue:GenericDimmableLightHUEComponent and hue:ColorTemperatureLightSpotHUEComponent.

Version 2.1.37 & 38

  • Added Atlanta Heating System components.

Version 2.1.39

  • Added rts:ExteriorBlindRTSComponent and renamed ‘Interior Blind (RTS)’ to ‘Blind (RTS)’.

Version 2.1.40

  • Fix tilt flow trigger issue.

Version 2.1.41

  • Added a watchdog to the alarm type capabilities to check if they switched off with notifying.
  • Added ‘io:AtlanticPassAPCZoneControlZoneComponent’,
  • Added ‘io:CumulatedElectricalEnergyConsumptionIOSystemDeviceSensor’
  • Added ‘io:TemperatureInCelciusIOSystemDeviceSensor’"

Version 2.1.42

  • Add KeyGo remote.
  • Added MY position to io:RollerShutterGenericIOComponent.
  • Fixed a typo in io:IORemoteController that would stop the initial state being set"

Version 2.1.43

  • Fix ‘stop’ button sending null as the command.

Version 2.1.44

  • Added Atlantic Main Zone Controller and Atlantic Hot Water Production

Version 2.1.45

  • Added Atlantic Electric Heater

Version 2.1.46

  • Added Radiator Valve

Version 2.1.47

  • Added Somfy RTDS Water Sensor

Version 2.1.48

  • Added io sliding gate.
  • Fixed a potential lock up of the event registration process.
  • When polling is switched back on, it now refreshes all the capabilities as they might have changed while not polling.

Version 2.1.49

  • Fixes for Radiator valve.

Version 2.1.50

  • Fixes to clear Lockstate when it no longer appears in the state data.

Version 2.1.51

  • Another attempt to fix the lock state.

Version 2.1.52

  • Fixed inconsistent naming of a function that was introduced in version 2.1.50.

Version 2.1.53

  • Fixed an issue that prevent some controls from completing a command if polling is disabled.

Version 2.1.54

  • Added RTS horizontal awning.

Version 2.1.55

  • Added dirty and battery alarms to smoke detectors.
  • Changed login screen text to make it clearer that the details are for both Tahoma and Connexoon.
  • Fixed error when clearing login details.

Version 2.1.56

  • Fix for potential issue when polling is dissabled that could prevent starting it again


Version 2.1.57

  • Extended lockout period after a failed authentication to prevent re-triggering Somfy’s temporary account lock out.

Version 2.1.58 to 2.1.62

  • Added RTS Gate Opener

Version 2.1.63

  • Added Velux external sunscreen (io:VerticalExteriorAwningVeluxIOComponent)

Version 2.1.64

  • Added Lock State to the Exterior blind (io) covers

Version 2.1.65

  • Added Lock State to the Velux Roof Window

Version 2.1.66

  • Added support for the io:RollerShutterUnoIOComponent to the Roller shutter (io) device"

Version 2.1.67

  • Added Command Complete flow trigger.
  • Optimized logging.
  • Fixed an error when event data had no value.

Version 2.1.68

  • Fixed completely skipping event data if a duplicate exists

Version 2.1.69

  • Added retry to failed commands.
  • Abort previous shutter command when a new command arrives before previous one is complete.
  • Deprecates global command complete and replaced it with device command complete.

Version 2.1.70

  • Added Contact sensor (io:SomfyBasicContactIOSystemSensor)
  • Added Siren (io:SomfyIndoorSimpleSirenIOComponent).

Version 2.1.71

  • Added Gate Opener (io:DiscreteGateOpenerIOComponent).

Version 2.1.72

  • Added Uno Screen Receiver (io:ScreenReceiverUnoIOComponent).

Version 2.1.73

  • Added Siren IO (io:SomfyIndoorSimpleSirenIOComponent).
  • Added Tahoma / Connexoon hub (internal:PodV2Component and internal:PodMiniComponent) for switch schedule / timer on and off.
  • Added Tahoma Alarm (internal:TSKAlarmComponent)

Version 2.1.74

  • Added Heater (io:DiscreteExteriorHeatingIOComponent).
  • Fixed an issue with the io valve temperature limits.

Version 2.1.75

  • Fix a bug introduced in the last version.

Version 2.1.76

  • Fix Hub > Timer / Schedule action cards


Version 2.1.76

  • Fix Heater Valve.

Version 3.0.0

  • Updated to SDK 3 and made cloud ready.

Version 3.0.2

  • Fix login issues

Version 3.0.3

  • Fixed re-authentication issues after a session timeout.

Version 3.0.4

  • Fix contact changed flow trigger.
  • Added extra checks for validating objects

Version 3.0.5

  • Fixed crash due to a missed SDK3 conversion

Version 3.0.6

  • Fixed Heat On / Off command.
  • Added rts:SwingingShutterRTSComponent
  • Added rts:OnOffRTSComponent

Version 3.0.7

  • Updated images for publishing

Version 3.0.8

  • Enhanced login failure messages

Version 3.0.9

  • Fixed Invert setting for window covers.

Version 3.0.10

  • Added extra parameter validation and error handling

Version 3.0.11

  • Added support for Velux products: ogp:window, ogp:shutter and ogp:light

Version 3.0.12

  • Update remaining store images

Version 3.0.13

  • Improved error handling

Version 3.0.14

  • Fixed an issue with sending some commands (including smoke alarm test)

Version 3.0.15

  • Added variable heater io:SimpleExteriorHeatingIOComponent

Version 3.0.16

  • Added more lights hue:BloomHUEComponent, hue:HueSpotHUEComponent, hue:HueLampHUEComponent.
  • Added Event log page to show Tahoma events.

Version 3.0.16

  • Added more lights zwave:OnOffLightZWaveComponent, zwave:OnOffZWaveComponent.
  • Add Hitachi AC.
  • Added battery alarm to SunIo, Opening Detector (io) and Temperature Sensor (io).

Version 3.0.17

  • Added more lights zwave:OnOffLightZWaveComponent, zwave:OnOffZWaveComponent.
  • Added battery alarm to SunIo, Opening Detector (io) and Temperature Sensor (io)."

Version 3.0.18

  • Fix for AC so it fetches the current status when added or when the app starts up.
  • Fix the fan speed command value to be ‘hi’ and ‘lo’"

Version 3.0.19

  • Various fixes for the AC device

Version 3.0.20

  • Added Horizontal Awning ogp:Awning

Version 3.0.21

  • Added Velux blind ogp:Blind

Version 3.0.22

  • Added sliding Pergola io:PergolaRailGuidedAwningIOComponent.
  • Added Homekit hub.

Version 3.0.23

  • Fix for Un-Boost when polling not enabled.

Version 3.0.24

  • Fix for some devices not boosting polling.

Version 3.0.25

  • Changed back to standard capability for RTS curtains and blinds so they are compatible with Google Home.

Version 3.0.26

  • Added support for ogp:VenetianBlind

Version 3.0.27

  • New device icons provided by Athom

Version 3.0.28

  • Added support for ‘io:CyclicGarageOpenerIOComponent’, ‘io:CyclicSlidingGateOpenerIOComponent’, ‘rts:GarageDoorRTSComponent’ and ‘io:RollerShutterWithBatterySomfyIOComponent’.
  • Added upper limit on polling interval of 90 seconds to prevent timeouts

Version 3.0.29

  • Added support for ‘io:IzymoController’ and ‘io:DimmableLightMicroModuleSomfyIOComponent’.

Version 3.0.30

  • Clean up settings and set maximum polling limit.
  • Improved recovery from event fetch error.

Version 3.0.31

  • Added Danfoss Icon Thermostat (zigbee:DanfossHeatingFloorComponent).
  • Added ‘eliot:OnOffSwitchEliotComponent’, ‘eliot:OnOffLightEliotComponent’, ‘eliot:DimmerLightEliotComponent’, ‘eliot:ElectricVehicleChargerComponent’ and io:AtlanticElectricalHeaterIOComponent

Version 3.0.32

  • Split io:AtlanticElectricalHeaterIOComponent to new IO Heating Interface device so it has the correct levels.

Version 3.0.33

  • Removed invalid options from io:AtlanticElectricalHeaterIOComponent levels.
  • Added ‘io:SwitchMicroModuleSomfyIOComponent’ to the Socket (RTS & io) device.

Version 3.0.34

  • Added Move to MY position flow action card to devices that were missing it.

Version 3.0.35

  • Added io:ExteriorVenetianBlindUnoIOComponent.

Version 4.0.0 Somfy TaHoma & Connexoon | Homey

  • Re-write to work with local and cloud access.

Please report any problems via PM on here

12 Likes

Tested on 2.0.2 and works! Really nice app and glad you are there to maintain it.

1 Like

For my screens the invertion is great.
It works great for invert position.
But, the invert up/down does not do anything.

But, thank you for your effort.
Great work!

I tested invert up/down with IO roller shutters (quiet) and that works. Maybe you can mention what kind of screens you have, so Adrian can have a look.

He already knows.
We have talked-about this.
And i send him my devices logfile.
I only put it here so everybody knows it is work in progress.

Version 2.0.3 is now in https://homey.app/a/com.somfy.tahoma/test/

This fixes an issue with the reverse direction of Up / Down buttons option. When I discovered the refresh token bug, that could prevent users accessing their devices, I rushed the update with that fix in. Unfortunately, I hadn’t finished testing the reverse option.

It also has an option to invert the logic of the tile action / display.

As I don’t have the devices required to fully verify these reverse features I will leave this version in test until I get confirmation that it is working.

I just want to apologise for the access token issue, in version 2.0.0. Obviously it’s not the best start and very embarrassing.

The problem occurred if a new access token was required when sending an action command.
As the app spends most of its time polling for information, which could refresh the token correctly, and a token last for many hours, so the odds of it failing were low. Therefore it only showed up once more users started to use the app and more specifically, users that have more flows controlling devices were more likely to come across it.

I would like to thank the users that provided information about the problem that help me track down the cause and fix it quickly.

3 Likes

Great work Adrian,

With my equipment everything works now.
These last changes did the trick for me!

Cheers.

1 Like

Hi Adrian, after the day with 2.0.0. test app I recognized problem with my flows. It triggers correct. But the scenario wont run. If I look into the flow card, but there is only circle turning and never get the green :white_check_mark: i have relogin tahoma credentials, i have restarted app.

If by live icons you mean displaying values on the tiles then there’s nothing I can do about that as Athom decided what is displayed there. So a thermostat will show temperature setpoint, alarms will show a !, etc.

Sorry about the late reply above. I had written the the message but forgot to press send.

I haven’t looked at scenarios at all as I don’t use them so I will need to investigate. It’s possibly the change to axios has broken something.

I have been playing with scenarios this morning and they seem to be working fine for me.
Could you have a look in the app - Configure app - Error Log tab to see if any errors are being generated?
Do your scenarios take a long time to run?

Hi, i am getting bunch of these. In my house I use quite advanced blinds automation and i hope it could be resolved. I will try to create new flow to se if its only problem for old flows when migrated to 2.0.0.

I tested more. I created new flow and it worked. After i again tested the old ones and now started work. I will let you know if the problem comes back.

EDIT: only after few minutes the scenarios again do not run :thinking::thinking: even the newly created.

Very strange. The flows I created this morning are still working. One of them runs two scenarios, close upstairs blinds and close downstairs blinds. Then I have two other flows to run the scenarios to open the blinds again.
When I run the flows the tick comes up straight away but Tahoma runs the scenarios sequentially. So the second scenario doesn’t run on tahoma until the first one has finished.
If I press the test button several times, I still get the tick every time but Tahoma queues them up. My poor blinds don’t know what is going on :wink:
If you go back to v1.6.24 in the community store (prior to the axios update) do you have the problem?
If you clear the error log, do the errors come back when you have problems with the flows?

I rolled back to 1.6.24 and working. Updated to 1.6.25 working and now from official store 2.0.0. working. No error so far. Will let you know if problem comes back. Many thanks for your support.

1 Like

@Adrian_Rockall
Can you check the ‘position’ code of IO horizontal awnings, I read on Facebook that someone did the update to 2.0.0 and the position is reversed. 100% is closed and 0% is open, this should be the opposite.

So in his case his horizontal awnings went open, when it started to rain (flow) :frowning:

Hi,

Since the update my roller blinds connected to a connexoon don’t work at all anymore.
I use io roller blinds
Any possibility to downgrade the app?

Since the Somfy app doesn’t work with ios 14, I have no more ways to use the rollerblinds


Do you have IO roller shutters with the option to move in slow speed (discrete mode). If so then probably you have to re-add the devices as roller shutter quiet instead of the normal one.

Ok loging out and in again and re-adding my blinds did the trick.
Maybe because the names don’t match?

Anyway it works, I only have to modify all the flows again

I might have found the issue causing those errors. It seems that if the token expires at a certain point then the check was still using an old variable that I had missed during the change to axios.
I will publish a test version very soon.