Integrating Google Home Devices into Mobile IoT Apps

When integrating a smart home into a mobile IoT app, developers often face a dilemma: use the native Android SDK (Google Home SDK) or the REST interface (Device Access API). A wrong choice leads to architecture rework, wasted time and money. A typical scenario: a client already has Nest thermostats

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Integrating Google Home Devices into Mobile IoT Apps
Complex
~5 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    600

When integrating a smart home into a mobile IoT app, developers often face a dilemma: use the native Android SDK (Google Home SDK) or the REST interface (Device Access API). A wrong choice leads to architecture rework, wasted time and money. A typical scenario: a client already has Nest thermostats and wants to control them from an iOS and Android app. The mistake is starting with Google Home SDK without checking iOS compatibility, resulting in backend rewrites and a 2-week delay. We offer platform-based selection: Device Access API suits iOS and cross-platform solutions but requires OAuth and polling; Google Home SDK is for Android with a reactive model and automatic authorization. However, if you have Nest cameras, WebRTC streaming is mandatory regardless of choice. Our team has over 6 years of mobile development experience and has completed over 30 IoT projects, including integrations with Google Home, Apple HomeKit, and Samsung SmartThings. Timely API selection can save up to 30% of the integration budget — that's up to $5,000 in savings. To choose the optimal solution, request a free consultation.

Comparison of Approaches

Parameter Device Access API (REST) Google Home SDK (Android)
Platforms iOS, Android, cross-platform Android only
Devices Nest (thermostats, cameras, doorbells) All Matter + Nest via Home
Authorization OAuth 2.0 (Google Sign-In) Automatic via Google Play
Reactivity Pull (requests) Push (Kotlin Flow)
Integration time 2-3 weeks 3-4 weeks

Device Access API: REST Integration for iOS and Flutter

Device Access works with Nest devices (thermostats, cameras, doorbells). Authorization via OAuth 2.0, after which the app gains access to Structures, Rooms, and Devices:

GET https://smartdevicemanagement.googleapis.com/v1/enterprises/{projectId}/devices Authorization: Bearer {access_token} 

The response contains a list of devices with traits. The Nest Learning Thermostat 3rd gen returns:

{ "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.THERMOSTAT", "traits": { "sdm.devices.traits.ThermostatMode": { "mode": "HEAT", "availableModes": ["HEAT", "COOL", "HEATCOOL", "OFF"] }, "sdm.devices.traits.ThermostatTemperatureSetpoint": { "heatCelsius": 21.5 }, "sdm.devices.traits.Temperature": { "ambientTemperatureCelsius": 19.8 } } } 

Control via ExecuteCommand. Example on iOS with Alamofire:

func setThermostatMode(_ mode: String, deviceName: String) async throws { let url = "https://smartdevicemanagement.googleapis.com/v1/\(deviceName):executeCommand" let body: [String: Any] = [ "command": "sdm.devices.commands.ThermostatMode.SetMode", "params": ["mode": mode] ] _ = try await AF.request(url, method: .post, parameters: body, encoding: JSONEncoding.default, headers: authHeaders) .serializingDecodable(CommandResponse.self) .value } 

Authorization via Google Sign-In SDK with scope https://www.googleapis.com/auth/sdm.service. Store the refresh token in Keychain — Device Access tokens last 1 hour, refresh tokens last 3 months. Proper token handling reduces login errors by 90% compared to insecure storage, saving up to $5,000 in support costs. Device Access API handles up to 100 requests per second per project.

How to Correctly Implement Google Home SDK Integration on Android?

On Android, Google Home SDK provides native access to the ecosystem, including Matter devices. Add via Gradle: implementation("com.google.home:google-home-sdk:1.1.0"). Initialization and device interaction via Flow:

val homeClient = HomeManager.getHomeClient(context) homeClient.getHomes() .flowOn(Dispatchers.IO) .collect { homes -> homes.forEach { home -> home.devices().collect { devices -> devices.forEach { device -> processDevice(device) } } } } // Observe changes suspend fun observeThermostat(device: HomeDevice) { device.trait(ThermostatMode)?.changes()?.collect { mode -> updateUI(mode.mode) } } // Command via traits val thermostatTrait = device.trait(ThermostatMode) ?: return thermostatTrait.setMode(ThermostatMode.Mode.COOL) 

Nest Cameras: WebRTC Streaming

The Camera Access trait returns rtspUrl or WebRTC offer. Newer Nest Cam models only work via WebRTC:

val cameraLiveStream = device.trait(CameraLiveStream) val streamResponse = cameraLiveStream?.generateWebRtcStream( offerSdp = localPeerConnection.localDescription?.description ?: "" ) peerConnection.setRemoteDescription( RTCSessionDescription(RTCSessionDescription.Type.ANSWER, streamResponse.answerSdp) ) 

A typical mistake is not renewing the stream token in time. A WebRTC session lasts 5 minutes, then Nest closes the connection. You need a background timer calling extendWebRtcStream() 30 seconds before expiration.

Common Mistake: Not Renewing the Stream Token Many developers forget to extend the WebRTC session, causing stream drops. Implement a timer that checks session lifetime and automatically calls extendWebRtcStream.

Ecosystem Limitations

Device Access API requires Google approval for each project — application via the console, response time 1 to 5 business days. A project registration fee applies. Cameras require the user's Nest Aware subscription — important to indicate in the UX. According to official Google documentation, these requirements are mandatory.

Google Home SDK on Android is still in Developer Preview; the API may change. For production camera solutions, Device Access API is more reliable. Based on our completed projects, a hybrid approach (SDK for device control, Device Access for cameras) yields the best results.

Key Integration Steps

  1. Requirements analysis and approach selection (SDK, REST, or hybrid)
  2. OAuth 2.0 setup and Google Cloud Project configuration
  3. Implementation of Device Access API or Google Home SDK (or both)
  4. WebRTC streaming integration for Nest cameras (including WebRTC Nest setup)
  5. Testing on real devices and debugging
  6. Documentation and client team training
  7. Support during app store publication

Choosing the Right API for Your Project

If your app is Android-only, choose Google Home SDK — it provides a reactive model and automatic authorization, and is 3x faster for Android development. For iOS and cross-platform, Device Access API is more versatile but requires manual OAuth and polling. A hybrid solution is best if you need both device control and camera streaming. For voice control via Google Assistant, ensure proper OAuth setup.

The Importance of Proper Refresh Token Handling

If a refresh token expires or is stored insecurely, the user loses device access. In one project, a client lost control over thermostats due to storing tokens in UserDefaults. We rewrote authorization with Keychain/EncryptedSharedPreferences, reducing login errors by 90% compared to previous implementation. Proper token handling saves up to 30% on support time.

Stage Device Access API Google Home SDK
OAuth setup 1-2 days 0 (auto)
Command implementation 3-5 days 2-3 days
WebRTC streaming 5-7 days 3-5 days (Android)
Testing 3-5 days 3-5 days

What’s Included in Our Integration Service

  • Requirements analysis and optimal approach selection
  • OAuth authorization setup and Google Cloud Project configuration
  • Implementation of Device Access API or Google Home SDK (or both)
  • WebRTC streaming integration for Nest cameras
  • Testing and debugging on real devices
  • Documentation with detailed guides
  • Access credentials management (proper token storage)
  • Client team training on maintenance
  • Support during app store publication

Timeline: 2 to 6 weeks depending on complexity. Cost is calculated individually after project evaluation. Contact us for an accurate estimate for your smart home integration project — we guarantee compatibility with current Google requirements. Request a consultation on choosing the right API today.