# esp-rainmaker-ios **Repository Path**: flydilong/esp-rainmaker-ios ## Basic Information - **Project Name**: esp-rainmaker-ios - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-19 - **Last Updated**: 2021-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## ESP RainMaker iOS App This is the official iOS app for [ESP RainMaker](https://github.com/espressif/esp-rainmaker), an end-to-end solution offered by Espressif to enable remote control and monitoring for ESP32-S2 and ESP32 based products without any configuration required in the Cloud. For more details : - Please check the ESP RainMaker documentation [here](http://rainmaker.espressif.com/docs/get-started.html) to get started. - Try out this app in [App Store](https://apps.apple.com/app/esp-rainmaker/id1497491540). ## Features ### User Management - Signup/Signin using email id. - Third party login includes Apple login, GitHub and Google. - Forgot/reset password support. - Signing out. ### Provisioning - Uses [ESPProvision](https://github.com/espressif/esp-idf-provisioning-ios/) library for provisioning. - Automatically connects to device using QR code. - Can choose manual flow if QR code is not present. - Shows list of available Wi-Fi networks. - Supports SoftAP based Wi-Fi Provisioning. - Performs the User-Node association workflow. ### Manage - List all devices associated with a user. - Shows node and device details. - Capability to remove node of a user. - Shows online/offline status of nodes. ### Control - Shows all static and configurable parameters of a device. - Adapt UI according to the parameter type like toggle for power, slider for brightness. - Allow user to change and monitor parameters of devices. ### Local Control - This feature allows discovering devices on local Wi-Fi network using Bonjour (mDNS) and controlling them using HTTP as per the [ESP Local Control](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_local_ctrl.html) specifications. - Local Control ensures your devices are reachable even when your internet connection is poor or there is no internet over connected Wi-Fi Local Control feature is optional but enabled by default. It can be disabled from the `Configuration.plist` by setting `Enable Local Control` key from `App Configuration` to `NO`. ### Personalisation - Change theme colour of App at runtime. - Change app background during runtime. ### Scheduling Schedules allow you to automate a device by setting it to trigger an action at the same time on a specified day or days of the week. List of operations that are supported for scheduling : - Add. - Edit. - Remove. - Enable/disable. Schedule feature is optional but enabled by default. Schedule can be disabled from the `Configuration.plist` by setting `Enable Schedule` key from `App Configuration` to `NO`. ## Supports - iOS 12.0 or greater. - Xcode 12.0 - Swift 5+ ## Installation - Run `pod install` from ESPRainMaker folder in the terminal. - After pod installation open ESPRainMaker.xcworkspace project. - Build and run the project. ## Additional Settings Settings associated with provisioning a device can be modified in the `Configuration.plist` file under `Provision Settings` dictionary. Description of each key can be found below. | Key | Type | Description | | ----------- | ----------- | --- | | ESP Transport | String | Possible values:
**Both**(Default) : Supports both BLE and SoftAP device provisioning.
**SoftAP** : supports only SoftAP device provisioning.
**BLE** : supports only BLE device provisioning. | | BLE Device Prefix | String | Search for BLE devices with this prefix in name. | | ESP Allow Prefix Search | Bool | Prefix search allows you to filter available BLE device list based on prefix value. | | ESP Security Mode | String | Possible values:
**Secure**(Default) : for secure/encrypted communication between device and app.
**Unsecure** : for unsecure/unencrypted communication between device and app.| ## License Licensed under Apache License Version 2.0.