[Release] Danfoss Ally

This application and its two drivers provide an interface to the Danfoss Ally cloud API. Application requires an API key and application Secret which are available from Danfoss by registering the app.

Clicking on the Check Credentials will cause the app to attempt a login and return an access token. Get Devices will query the Danfoss cloud for your registered devices, and create a child device for each thermostat or room sensor found.
Thermostat:


Sensor:

Polling rate for each is set to no polling, so set this value to what is appropriate for updating the temperature and humidity values (if the room is slow to cool/heat use a longer value, if it is quicker to cool/heat use a shorter value) - normally 5-10 minutes is more than sufficient. The poll rate only effects the display values, all commands are sent immediately.

The app and drivers are available in HPM or individually at:
App:
https://raw.githubusercontent.com/thebearmay/hubitat/main/danfoss/danfossMstr.groovy

Thermostat Driver:
https://raw.githubusercontent.com/thebearmay/hubitat/main/danfoss/danfossThermostat.groovy

Room Sensor Driver:
https://raw.githubusercontent.com/thebearmay/hubitat/main/danfoss/danfossSensor.groovy

3 Likes

Reserved

This is GREAT work! I can confirm that the app is working perfectly. Be aware, that if you have set the thermostats to automatic you have to change the mode to manual to be able to change the temperature via the app.

:mechanical_arm: :slight_smile: :grin:

1 Like

How do you link the app account and the api account?

Just keep getting "Unknown email" errors from the API, even when using the same email for app and api :confused:
Must have missed a step somewhere

Did you register an app in their developer portal?

Yes I did - but when using the generated key and secret, I only get a response stating an incorrect email.

And I see ALOT of other users having the same issue - that the procedure for linking the dev and app accounts are not described at all.

As long as you used the same email address for both it should have linked them automatically.

How do I register devices? My Get devices shows none.

Works great. Thanks!
But I get an error when Hubitat try to refresh the values. Is it only me or do you also have the same problem?

groovy.json.JsonException: expecting '}' or ',' but got current char 'r' with an int value of 114

The current character read is 'r' with an int value of 114
expecting '}' or ',' but got current char 'r' with an int value of 114
line number 1
index number 1
{result={active_time=1670606226, create_time=1670606227, device_type=Danfoss Ally™ Radiator Thermostat, id=bfd818df367fa2fd68v5jl, name=Söder, online=true, status=[{code=switch, value=true}, {code=mode, value=leaving_home}, {code=work_state, value=NoHeat}, {code=temp_set, value=200}, {code=upper_temp, value=350}, {code=temp_current, value=196}, {code=window_state, value=close}, {code=lower_temp, value=50}, {code=child_lock, value=false}, {code=battery_percentage, value=72}, {code=factory_reset, value=false}, {code=fault, value=0}, {code=ViewingDirection, value=false}, {code=ally_pro_banner, value=false}, {code=LoadRadiatorRoomMean, value=532}, {code=Load_estimate, value=545}, {code=leavinghome_temp, value=190}, {code=pause_temp, value=60}, {code=SetpointChangeSource, value=Schedule}, {code=leave_home_fast_heat, value=190}, {code=at_home_fast_heat, value=200}, {code=manual_mode_fast, value=200}, {code=holiday_temp, value=150}, {code=window_toggle, value=false}, {code=window_state_info, value=close}, {code=at_home_setting, value=200}, {code=leaving_home_setting, value=190}, {code=pause_setting, value=60}, {code=holiday_setting, value=150}, {code=heating_mode_VC, value=Heating}, {code=switch_state, value=false}, {code=last_click_time, value=}, {code=data_logger, value=}, {code=motor_step_counter, value=0}, {code=vertical_mounting, value=Horizontal}, {code=sync_preheat_time, value=734544000}, {code=battery_level, value=0}, {code=banner_ctrl, value=false}, {code=boiler_relay, value=true}, {code=room_sensor, value=true}, {code=sensor_avg_temp, value=191}, {code=mounting_mode_active, value=false}, {code=sw_build, value=}, {code=battery_voltage, value=30}, {code=ext_measured_rs, value=1910}, {code=radiator_covered, value=true}, {code=ctrl_alg, value=1}, {code=heat_available, value=true}, {code=heat_supply_request, value=true}, {code=load_balance_enable, value=true}, {code=etrv_configuration, value=0}, {code=rh_temp_meau, value=0}, {code=local_temperature, value=1961}, {code=pi_heating_demand, value=13}, {code=OccupiedSetpoint, value=1900}, {code=operation_mode, value=3}, {code=open_window, value=1}, {code=adaptation_runstatus, value=2}, {code=sw_error_code, value=0}, {code=moto_step_counter, value=18990}, {code=ControlDiagnostics, value=}, {code=CtrlDiagFrequency, value=0}], sub=true, time_zone=+02:00, update_time=1670606240}, t=1681453674261}
.^ on line 232 (method updateChild)

Guessing a C-8 hub?

Dummy question here, but I played a little with an Ally and my C-8... I can add the Ally as a device, but the app couldn't find any devices... Should I add it to an Ally Gateway and register it in the mobile app instead, to make it visible through the cloud API to the Hubitat app?

Until I fix the JSON issue above it won’t be able to interpret the data it is receiving

Hi,
Has anyone found documentation for the Ally API JSON responses? Many of the code/values pairs are obvious, but several of them would need some clarification. I thought there would be a document describing each code and possible range of values, but I could not find anything.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.