react-native-esp-smartconfig
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

react-native-esp-smartconfig

ESP-TOUCH protocol to seamlessly configure Wi-Fi devices connecting to a router.

Installation

npm install react-native-esp-smartconfig

Congiguration

Android

  • Add following permissions into android/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

iOS

  • Add following entitlements into ios/<project-name>/<project-name>.entitlements
<key>com.apple.developer.networking.wifi-info</key><true/>
<key>com.apple.developer.networking.HotspotConfiguration</key><true>
  • Add following capabilites into ios/<project-name>/info.plist
<key>NSLocalNetworkUsageDescription</key>
<string>The application needs to access the local network, allowing UDP to send broadcasts</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This application uses location permissions to obtain currently connected Wi-Fi information. This application does not collect, store or record any location data.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This application uses location permissions to obtain currently connected Wi-Fi information. This application does not collect, store or record any location data.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This application uses location permissions to obtain currently connected Wi-Fi information. This application does not collect, store or record any location data.</string>
  • Add adding them, run pod install inside ios directory.

Usage

  • Available methods and interfaces
interface SmartConfigResponse {
  bssid: string;
  ipv4: string;
}

interface WifiInfoState {
  bssid: string | null;
  ssid: string | null;
  ipv4: string;
  isConnected: boolean;
  isWifi: boolean;
  frequency: number | null; // android only
  type: string; // connection type name i.e wifi/cellular/none
}

function start({
  bssid: string;
  ssid: string;
  password: string;
}): Promise<SmartConfigResponse[]>;

function stop();

function getWifiInfo(): Promise<WifiInfoState>;
  • Javascript example
import espSmartconfig from 'react-native-esp-smartconfig';

espSmartconfig
  .start({
    bssid: 'wifi-network-bssid',
    ssid: 'wifi-network-ssid',
    password: 'wifi-password',
  })
  .then(function (results) {
    // Array of devices, successfully handshaked by smartconfig
    console.log(results);
    /*[
    {
      'bssid': 'device-bssid', // device bssid
      'ipv4': '192.168.1.11'   // device local ip address
    }
  ]*/
  })
  .catch(function (error) {});

// to cancel on-going smartconfig process
espSmartconfig.stop();

TODO

  • [x] Android support
  • [x] iOS support
  • [x] getWifiInfo - android
  • [ ] getWifiInfo - ios

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Created by Alauddin Ansari (alauddinx27@gmail.com)

Package Sidebar

Install

npm i react-native-esp-smartconfig

Weekly Downloads

8

Version

0.4.0

License

MIT

Unpacked Size

204 kB

Total Files

74

Last publish

Collaborators

  • alauddinx27