Google Home inputs for Thermostat

I have 2 thermostats that are controllable via a Hubitat Elevation. I have a bunch of logic in Node-Red that drives what I want to occur. I have been able to build a NR dashboard that allows me to manually input my desired settings. Other members of my household would prefer to use the Google Home app instead of the Node-Red dashboard.

I have tried both node-red-contrib-smartnora and node-red-contrib-googlehome to accomplish this. What I have discovered is that both do a fine job of conveying the thermostat settings to display in Google Home, but neither seems capable of taking inputs in Google Home and returning them to Node-RED.

Has anyone succeeded in sending thermostat inputs from Google Home to Node-RED using either of these nodes (or a different palette)? If so, any idea what I might be missing? If you have it working, I would be happy to share my flows or look at yours to see what I am missing.

Hello tmichaeltx,

Both nodes are very well capable to contol your thermostat from the Google Home app or by voice.

I recently moved from Smartnora to Google SmsrtHome (node-red-contrib-google-smarthome).and both works fine
At this time of the day, I just powered down my computer and tomorrow I will publish the flow.

You might want to look at Google Device node Thermostat setting · Issue #214 · mikejac/node-red-contrib-google-smarthome · GitHub

For Smartnora:node-red-contrib-smartnora/doc/nodes/thermostat at master · andrei-tatar/node-red-contrib-smartnora · GitHub

Regards

1 Like

As promised, see below an example on how to control the Google Device node.
The Google Device node will be the future for this application and it will replace the Google Thermostat node.

On the left side you see, what you have to Inject in order to control the node.
Be aware that if you try to Inject a value for thermostatTemperatureSetpoint, the value is not correctly indicated under the node.
See: Google Device node Thermostat setting · Issue #214 · mikejac/node-red-contrib-google-smarthome · GitHub
If you control this node, either with your voice or by changing the set-point or mode you will see at the output of the node the following:

Screenshot_Google_Device_Thermostat02

With this data and some other Node RED nodes it is quite easy to control the thermostats.

Another thing you should know is that the mode "Auto", which is supported by Google is not correctly indicated in the Google Home app. It is indicated as "Other". This mode cannot be selected in the Google Home app.

The complete test flow, you will find below:

[{"id":"70e56548053f126a","type":"google-device","z":"b59303621d1f3cb4","client":"15bb2a8889f352fa","name":"Moduline 400","topic":"thermostat","room_hint":"Woonkamer","device_type":"THERMOSTAT","trait_appselector":false,"trait_channel":false,"trait_inputselector":false,"trait_mediastate":false,"trait_onoff":false,"trait_transportcontrol":false,"trait_modes":false,"trait_volume":false,"trait_toggles":false,"trait_brightness":false,"trait_colorsetting":false,"appselector_file":"applications_<id>.json","appselector_type":"str","channel_file":"channels_<id>.json","channel_type":"str","inputselector_file":"inputs_<id>.json","inputselector_type":"str","command_only_input_selector":false,"ordered_inputs":false,"support_activity_state":false,"support_playback_state":false,"command_query_onoff":"","supported_commands":["CAPTION_CONTROL","NEXT","PAUSE","PREVIOUS","RESUME","SEEK_RELATIVE","SEEK_TO_POSITION","SET_REPEAT","SHUFFLE","STOP"],"volume_max_level":100,"volume_can_mute_and_unmute":true,"volume_default_percentage":40,"level_step_size":1,"command_only_volume":false,"command_only_brightness":false,"command_only_colorsetting":false,"color_model":"temp","temperature_min_k":2000,"temperature_max_k":9000,"modes_file":"modes_<id>.json","modes_type":"str","command_query_modes":"","toggles_file":"toggles_<id>.json","toggles_type":"str","command_query_toggles":"","trait_camerastream":false,"hls":"","hls_app_id":"","dash":"","dash_app_id":"","smooth_stream":"","smooth_stream_app_id":"","progressive_mp4":"","progressive_mp4_app_id":"","webrtc":"","webrtc_offer":"","webrtc_ice_servers":"","webrtc_ice_servers_type":"str","auth_token":"","passthru":false,"trait_scene":false,"scene_reversible":true,"trait_timer":false,"trait_temperaturesetting":true,"max_timer_limit_sec":86400,"command_only_timer":false,"available_thermostat_modes":["off","heat","on","auto"],"min_threshold_celsius":0,"max_threshold_celsius":40,"thermostat_temperature_unit":"C","buffer_range_celsius":2,"command_query_temperaturesetting":"","trait_temperaturecontrol":false,"tc_min_threshold_celsius":0,"tc_max_threshold_celsius":40,"tc_temperature_step_celsius":1,"tc_temperature_unit_for_ux":"C","tc_command_query_temperaturecontrol":"","trait_humiditysetting":false,"min_percent":0,"max_percent":100,"command_query_humiditysetting":"","trait_dock":false,"trait_locator":false,"trait_lockunlock":false,"trait_reboot":false,"trait_openclose":false,"discrete_only_openclose":false,"open_direction":[],"command_query_openclose":"","trait_startstop":false,"pausable":false,"available_zones":[],"trait_runcycle":false,"trait_softwareupdate":false,"trait_rotation":false,"supports_degrees":true,"supports_percent":true,"rotation_degrees_min":0,"rotation_degrees_max":360,"supports_continuous_rotation":false,"command_only_rotation":false,"trait_lighteffects":false,"default_sleep_duration":1800,"default_wake_duration":1800,"supported_effects":["colorLoop","sleep","wake"],"trait_statusreport":false,"trait_cook":false,"supported_cooking_modes":[],"food_presets_file":"foodPresets_<id>.json","food_presets_type":"str","trait_fanspeed":false,"reversible":false,"supports_fan_speed_percent":false,"fan_speeds_ordered":false,"command_only_fanspeed":false,"available_fan_speeds_file":"availableFanSpeeds_<id>.json","available_fan_speeds_type":"str","trait_sensorstate":false,"sensor_states_supported":[],"arm_levels_ordered":false,"trait_fill":false,"available_fill_levels_file":"availableFillLevels_<id>.json","available_fill_levels_type":"str","supports_fill_percent":false,"ordered_fill_levels":true,"trait_armdisarm":false,"available_arm_levels_file":"availableArmLevels_<id>.json","available_arm_levels_type":"str","trait_energystorage":false,"is_rechargeable":false,"query_only_energy_storage":false,"energy_storage_distance_unit_for_ux":"","trait_dispense":false,"supported_dispense_items_file":"supportedDispenseItems_<id>.json","supported_dispense_items_type":"str","supported_dispense_presets_file":"supportedDispensePresets_<id>.json","supported_dispense_presets_type":"str","trait_networkcontrol":false,"supports_enabling_guest_network":false,"supports_disabling_guest_network":false,"supports_getting_guest_network_password":false,"network_profiles":[],"supports_enabling_network_profile":false,"supports_disabling_network_profile":false,"supports_network_download_speedtest":false,"supports_network_upload_speedtest":false,"trait_objectdetection":false,"show_trait":"selected","advanced_settings":true,"ct_appselector":"","ct_armdisarm":"","ct_brightness":"","ct_camerastream":"","ct_channel":"","ct_colorsetting":"","ct_cook":"","ct_dispense":"","ct_dock":"","ct_energystorage":"","ct_fanspeed":"","ct_fill":"","ct_humiditysetting":"","ct_inputselector":"","ct_lighteffects":"","ct_locator":"","ct_lockunlock":"","ct_mediastate":"","ct_modes":"","ct_networkcontrol":"","ct_objectdetection":"","ct_onoff":"","ct_openclose":"","ct_reboot":"","ct_rotation":"","ct_runcycle":"","ct_scene":"","ct_sensorstate":"","ct_softwareupdate":"","ct_startstop":"","ct_statusreport":"","ct_temperaturecontrol":"","ct_temperaturesetting":"","ct_timer":"","ct_toggles":"","ct_transportcontrol":"","ct_volume":"","pin_appselector":"","pin_armdisarm":"","pin_brightness":"","pin_camerastream":"","pin_channel":"","pin_colorsetting":"","pin_cook":"","pin_dispense":"","pin_dock":"","pin_energystorage":"","pin_fanspeed":"","pin_fill":"","pin_humiditysetting":"","pin_inputselector":"","pin_lighteffects":"","pin_locator":"","pin_lockunlock":"","pin_mediastate":"","pin_modes":"","pin_networkcontrol":"","pin_objectdetection":"","pin_onoff":"","pin_openclose":"","pin_reboot":"","pin_rotation":"","pin_runcycle":"","pin_scene":"","pin_sensorstate":"","pin_softwareupdate":"","pin_startstop":"","pin_statusreport":"","pin_temperaturecontrol":"","pin_temperaturesetting":"","pin_timer":"","pin_toggles":"","pin_transportcontrol":"","pin_volume":"","x":690,"y":1520,"wires":[["20e49e2c5c6ecf49"]]},{"id":"ea03002e547ef6e5","type":"inject","z":"b59303621d1f3cb4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"thermostatTemperatureAmbient","payload":"23","payloadType":"num","x":360,"y":1480,"wires":[["70e56548053f126a"]]},{"id":"f66eef4608ed768d","type":"inject","z":"b59303621d1f3cb4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"thermostatTemperatureSetpoint","payload":"22","payloadType":"num","x":360,"y":1520,"wires":[["70e56548053f126a"]]},{"id":"6ff2eea6b8380b44","type":"inject","z":"b59303621d1f3cb4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"thermostatMode","payload":"auto","payloadType":"str","x":320,"y":1560,"wires":[["70e56548053f126a"]]},{"id":"20e49e2c5c6ecf49","type":"debug","z":"b59303621d1f3cb4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":930,"y":1520,"wires":[]},{"id":"15bb2a8889f352fa","type":"googlesmarthome-client","name":"Jonas-SmartHome","enabledebug":true,"default_lang":"nl","usegooglelogin":true,"usehttpnoderoot":false,"port":"3001","httppath":"","ssloffload":false,"accesstokenduration":"60","reportinterval":"60","request_sync_delay":"2","set_state_delay":"2"}]

Regards
1 Like

Thanks for the quick feedback. I am not quite sure why I didn't find it before, but it is working for me now. It turns out the real problem was neither set of nodes. The problem was the user interface on the Google side. They are of course focused on the voice side of things, but I was mostly interested in the touch interface of a Google Nest Hub and the Google Home app on my ios devices. The controls were different from what I was expecting (maybe they have updated them). Today, I found them working well.

I think your point about the Auto mode not working is really the root of my problem as that is the mode I want most of the time.

Thanks.

Google Assistant is primarily a Voice assistant and the touch control, even on their own Google Nest Hub are not very well supported. You will see that the Auto mode is indicated as 'Other", but you cannot change to "Auto" or even "Other" in the app or Nest Hub. June 2020 I already sent an email to Google with questions about it, but never received any response.
It was a reaction on this article: IoT & Google Assistant. Getting started with smart home… | by Daniel Myers | Google Developers | Medium

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