[OBSOLETE] TaHoma® by Somfy

It was my fault. IO devices are working fine using the smartthings classic app…

HI.
I have installed the Smartapp and when I try to use it it finds my curtains and I choose them and Save - Bu the I just get a message “Error when Saving”
What could be the problem?

Could me many. If you send me the logs I can have a look. Please delete all personal information from log before sending.
Are you using the classic app?

HI.
Have tried booth Classic and new app.
Here you have log made from atempting from new app
For some reason I can only have 2 links in a post. So in one of the links in my log I replaced Start of link with some XXXX

eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: User selected 0 TaHoma Light Sensor IO devices.
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices(): switches [:]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices(): rollerShuttersWithLowSpeedManagementIOComponent [:]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices(): rawDeviceData [eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16722913:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1513955899000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16722913, enabled:true, label:Gardin 1, lastUpdateTime:1513955899000, oid:acd2db33-7858-4529-8f04-2447ca6b50e9, placeOID:4ac8f0da-4127-45ef-b203-488fa45e498a, shortcut:false, type:1, uiClass:RollerShutter, widget:UpDownRollerShutter], eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16752844:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1517838451000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16752844, enabled:true, label:Gardin 4, lastUpdateTime:1517838451000, oid:0a196f77-ced5-4e8f-ae1e-c56717611549, placeOID:4ac8f0da-4127-45ef-b203-488fa45e498a, shortcut:false, type:1, uiClass:RollerShutter, widget:UpDownRollerShutter], eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/1…[TRUNCATED]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices(): rollerShutters [eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16722913:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1513955899000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16722913, enabled:true, label:Gardin 1, lastUpdateTime:1513955899000, oid:acd2db33-7858-4529-8f04-2447ca6b50e9, placeOID:4ac8f0da-4127-45ef-b203-488fa45e498a, shortcut:false, type:1, uiClass:RollerShutter, widget:UpDownRollerShutter], eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16752844:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1517838451000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16752844, enabled:true, label:Gardin 4, lastUpdateTime:1517838451000, oid:0a196f77-ced5-4e8f-ae1e-c56717611549, placeOID:4ac8f0da-4127-45ef-b203-488fa45e498a, shortcut:false, type:1, uiClass:RollerShutter, widget:UpDownRollerShutter], eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/…[TRUNCATED]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices(): resp.data [creationTime:1513504090000, devices:[[attributes:, available:true, controllableName:internal:TSKAlarmComponent, creationTime:1513504160000, definition:[commands:[[commandName:alarmOff, nparams:0], [commandName:alarmOn, nparams:0], [commandName:getName, nparams:0], [commandName:off, nparams:0], [commandName:on, nparams:0], [commandName:setName, nparams:1], [commandName:refreshAlarmDelay, nparams:0], [commandName:refreshCurrentAlarmMode, nparams:0], [commandName:refreshIntrusionDetected, nparams:0], [commandName:setAlarmDelay, nparams:1], [commandName:alarmPartial1, nparams:0], [commandName:alarmPartial2, nparams:0], [commandName:setIntrusionDetected, nparams:1], [commandName:setTargetAlarmMode, nparams:1]], dataProperties:, qualifiedName:internal:TSKAlarmComponent, states:[[qualifiedName:core:NameState, type:DataState], [qualifiedName:internal:AlarmDelayState, type:ContinuousState], [qualifiedName:internal:CurrentAlarmModeState, type:DiscreteState, values:[off, partial1, partial2, total]], [qualifiedName:internal:IntrusionDetectedState, type:DiscreteState, values:[detected, notDetected, pending, sos]], [qualifiedName:internal:TargetAlarmModeState, type:DiscreteState, values:[off, partial1, partial2, sos, total]]], type:ACTUATOR, uiClass:Alarm, widgetName:TSKAlarmController], deviceURL:internal://1203-9842-6910/alarm/0, enabled:true, label:Alarm, lastUpdateTime:1513504160000, oid:5941b759-2600-47ed-9419-2d0f21dd5f54, placeOID:39a7a86a-65c9-4e34-a1bf-4af02599af4d, shortcut:false, states:[[name:core:NameState, type:3, value:alarm name], [name:internal:CurrentAlarmModeState, type:3, value:off], [name:internal:AlarmDelayState, type:1, value:30], [name:internal:TargetAlarmModeState, type:3, value:off], [name:internal:IntrusionDetectedState, type:3, value:notDetected]], type:1, uiClass:Alarm, widget:TSKAlarmController], [attributes:, available:true, controllableName:internal:PodV2Component, creationTime:1513504090000, definition:[commands:[[commandName:getName, nparams:0…[TRUNCATED]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: [method:GET, uri:https://www.tahomalink.com/enduser-mobile-web/enduserAPI/, path:setup, headers:[Cookie:JSESSIONID=0C52EA470601458E692BAF566D6CF29C]]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: getAuthorizationHeaderValue: Using cached token.
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updateDevices()
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: getAuthorizationHeaderValue()
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.49: debug SA 1.3.20180612: updated(): [username:xxxxxxxxxxxx, password:xxxxxxxx, debugMode:true, selectedRollerShutterNames:[eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16722913, eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16752844, eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16755604, eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16763871]]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.43: debug SA 1.3.20180612: [method:GET, uri:xxxxxxxxx.tahomalink.com/enduser-mobile-web/enduserAPI/, path:setup, headers:[Cookie:JSESSIONID=0C52EA470601458E692BAF566D6CF29C]]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: getAuthorizationHeaderValueCore(): authorizationHeaderValue JSESSIONID=0C52EA470601458E692BAF566D6CF29C
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: [method:POST, uri:https://www.tahomalink.com/enduser-mobile-web/enduserAPI/, path:login, headers:[Content-Type:application/x-www-form-urlencoded; charset=UTF-8]]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: getAuthorizationHeaderValueCore()
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: getAuthorizationHeaderValueCore(): resp.data [roles:[[name:ENDUSER]], success:true]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: getAuthorizationHeaderValue: Authorizing with server.
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: getAuthorizationHeaderValue()
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: setDefaultValues: atomicState: [installedAt:1585831704276, interiorRollerBlinds:[:], rollerShuttersWithLowSpeedManagementIOComponent:[:], authorizationRetriesRemaining:1, rollerShutters:[eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16722913:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1513955899000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16722913, enabled:true, label:Gardin 1, lastUpdateTime:1513955899000, oid:acd2db33-7858-4529-8f04-2447ca6b50e9, placeOID:4ac8f0da-4127-45ef-b203-488fa45e498a, shortcut:false, type:1, uiClass:RollerShutter, widget:UpDownRollerShutter], eb6b7afa-1499-4afd-9800-b9131e32c4cb.rts://1203-9842-6910/16752844:[attributes:[[name:rts:diy, type:6, value:true]], available:true, controllableName:rts:RollerShutterRTSComponent, creationTime:1517838451000, definition:[commands:[[commandName:close, nparams:0], [commandName:down, nparams:0], [commandName:identify, nparams:0], [commandName:my, nparams:0], [commandName:open, nparams:0], [commandName:rest, nparams:0], [commandName:stop, nparams:0], [commandName:test, nparams:0], [commandName:up, nparams:0]], dataProperties:[[qualifiedName:core:identifyInterval, value:0]], qualifiedName:rts:RollerShutterRTSComponent, states:, type:ACTUATOR, uiClass:RollerShutter, widgetName:UpDownRollerShutter], deviceURL:rts://1203-9842-6910/16752844, enabled:true, label:Gardin 4, lastUpdateTime:1517838451000, oid:0a196f77-ced5-4e8f-ae1e-c56717611549, placeOID:4ac8f0da-4127-45ef…[TRUNCATED]
eb6b7afa-1499-4afd-9800-b9131e32c4cb 10.48.42: debug SA 1.3.20180612: updateDevices()

Sorry but there’s no error in logs. No idea why save fails.

@jbtibor created a poll to se if there is any interest for rboy looking into the new api.

Thx for your effort in the community :+1:

Hello,
I have vertical screens and velux roller shutters but both didn’t show up after logging in. So, I’ve added support for both io:VerticalExteriorAwningIOComponent and io:RollerShutterVeluxIOComponent.

In the Tahoma Link dashboard, I first looked in the setup http-request for the json response and found the qualified names for my screens and roller shutters were io:VerticalExteriorAwningIOComponent and io:RollerShutterVeluxIOComponent. I forked the initial code, and added a few lines of code to support both io:VerticalExteriorAwningIOComponent and io:RollerShutterVeluxIOComponent. Both will be treated as the initial io:RollerShutterWithLowSpeedManagementIOComponent. I have also made a pull request for this small addition.

I tested with two screens and two roller shutters and I can confirm all four of them show up in the list. After adding the screens and roller shutters, I am able to control them (up, down, level, stop, …).

The result of the code can be found:
https://github.com/vhjoeri/SmartThings/blob/master/Somfy/TaHoma/TaHomaBySomfy.SmartApp.groovy

Of course all credits to jbtibor for the huge work, I’ve just added a few lines. At least for my setup it is working now…

Thank you @joerivh your pull requets have been merged.

1 Like

Thanks for all the work and for approving my pull request too @jbtibor. Only after trying @joerivh code my IO blinds showed up (I thought it didn’t work before). I was still missing my RTS blinds and managed to add that type too. Just added a debug statement and monitored the logs to find the right identifier.

1 Like

Hey @jbtibor or @jeanvancaloen, any chance you could port this to hubitat?
Thank you very much

hi @MrPancake sorry can’t help with that as I don’t have hubitat nor a clue how to do that :wink:

jeanvancaloen
I also have an RTS blind which I cannot connect to smartthings the same way as the IO blinds. Could you please tell what exactly did you do to make it work? Thanks!

Following the readme you should be able to work it out. You can find it here https://github.com/jbtibor/SmartThings/tree/master/Somfy/TaHoma
Take care that you need to install another device handler for RTS blinds
Hope it helps

Hi @joerivh and @jbtibor,

I also have some Velux equipment in my home. A Velux IO blind and a Velux IO roof window (Velux Skylight). Both show up in Tahoma together with my 3 Somfy RTS shutters. The 3 RTS shutters are discovered bij this great app, but my Velux devices (added via IO-Homecontrol) don’t show up, I’m afraid. Not even after Joeri’s code merge.
I get the following Live Logging when trying to discover my Tahoma devices:
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: initialize()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: setDefaultValues()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: updateDevices(): rollerShuttersWithLowSpeedManagementIOComponent [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: updateDevices(): rawDeviceData [6b6cb272-33e3-4910-87d7-346a89d4c6fc.rts://1213…etc.(these are the RTS shutters, if I’m correct?!)
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: updateDevices(): lightIOSystemSensors [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: getAuthorizationHeaderValue: Using cached token.
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: [method:GET, uri:https://www.tahomalink.com/enduser-mobile-web/enduserAPI/, path:setup, headers:[Cookie:JSESSIONID=75F7CF8832E536DE42A397F26A53]]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:25: debug SA 1.3.20180612: getAuthorizationHeaderValue()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: getRollerWithLowSpeedManagementIOComponentShutterNames()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: getRollerShutterNames()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: names [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: getSwitchNames()
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: interiorRollerBlindNames [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: updateDevices(): rollerShuttersWithLowSpeedManagementIOComponent [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: updateDevices(): rollerShutters [6b6cb272-33e3-4910-87d7-346a89d4c6fc.rts://1213…etc.(these are the RTS shutters, if I’m correct?!)
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:23: debug SA 1.3.20180612: getAuthorizationHeaderValue: Authorizing with server.
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: updateDevices(): interiorRollerBlinds [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: updateDevices(): lightIOSystemSensors [:]
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:24: debug SA 1.3.20180612: getAuthorizationHeaderValueCore(): authorizationHeaderValue JSESSIONID=75F7CF8832E536DE42A397F26A53
6b6cb272-33e3-4910-87d7-346a89d4c6fc 11:54:23: debug SA 1.3.20180612: settingsPage()

Could anyone help with discovering my Velux equipment?

Hello,

I would like to add some devices.
I have

  • IO Protexial alarm with motion detectors, opening detectors
  • IO orientable sun shade, IO temperature sensor, IO heating stuff
  • RTS light stuff
  • Legrand Netatmo: lights and outlets

@jbtibor, I’m interested if you could send me some advice how to capture things from chrome to add new devices.

Regards,

Ben.

I’m using https://www.tahomalink.com/enduser-mobile-web/externalAPI/json/getSetup to get installation information but I’m not able to find any link with your code for my switches for example.

Could someone help me how to find device type names from my configuration and make a link into a deviceHandler ?

Lobby for this to happen :wink:

@jbtibor Any chance you might want to port your code to Hubitat?
I migrated some months ago and really miss it

Sorry, this should be done by someone who has a Hubitat hub. It’s not that trivial, see this:

Unfortunately that is for the MyLink only.
Installing your integration on Hubitat fails on the setup because you can’t select the blinds, although the logs show they are listed correctly.
It’s a shame you don’t own a hubitat hub.
I believe it could be fixed by adjusting some of the methods using without anything major.
I tried it myself, but without success.