Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support SoftAP mode #6

Open
mateogianolio opened this issue Oct 3, 2023 · 11 comments
Open

Support SoftAP mode #6

mateogianolio opened this issue Oct 3, 2023 · 11 comments
Labels
help wanted Extra attention is needed

Comments

@mateogianolio
Copy link
Member

mateogianolio commented Oct 3, 2023

We currently do not have a device to test SoftAP provisioning with so any help appreciated!

@mateogianolio mateogianolio added the help wanted Extra attention is needed label Dec 15, 2023
@toni1703
Copy link

Hello, i have installed your library and I like it very much. I have a device for testing. Let's talk

@mateogianolio
Copy link
Member Author

Fantastic! I'm on vacation until January 2nd, if I have time before that I'll look through the code and compile a list of what needs to be tested.

@toni1703
Copy link

Fantastic! I'm on vacation until January 2nd, if I have time before that I'll look through the code and compile a list of what needs to be tested.

Hi again, Do you have time to test this?

@mateogianolio
Copy link
Member Author

mateogianolio commented Jan 16, 2024

Sure, we should be able to test it in the example app.

As far as I can tell we need to adjust some code in createESPDevice on Android because now it assumes BLE transport (checks for espDevice?.bluetoothDevice). But it might work if you scan for devices first like this:

let prefix = 'PROV_';
let transport = ESPTransport.softap;
let security = ESPSecurity.secure2;
const devices = await ESPProvisionManager.searchESPDevices(
  prefix,
  transport,
  security
);

// ... get device from list...

On iOS it should work with current code, but they say "SoftAP search is not supported in iOS currently." so you would need to configure the device like this:

import {
  ESPDevice,
  ESPTransport,
  ESPSecurity,
} from '@orbital-systems/react-native-esp-idf-provisioning';

const device = new ESPDevice({
  name: 'name',
  transport: ESPTransport.softap,
  security: ESPSecurity.secure2,
});

Then, on both Android and iOS connect with:

const proofOfPossession = 'proof of possession'; // or null if ESPSecurity.unsecure
const softAPPassword = 'softAPPassword';
const username = 'username'; // or null if ESPSecurity.unsecure or ESPSecurity.secure1

await device.connect(proofOfPossession, softAPPassword, username)

@fullychargedup
Copy link

Did you ever get this to work for Soft AP?

@mateogianolio
Copy link
Member Author

Hey there! Unfortunately, we haven't had time to try it yet because we only do BLE setup at the company. So the above code might or might not work.

@egidiusmengelberg
Copy link

Hi, any updates on this?

@mateogianolio
Copy link
Member Author

Version 0.4.2 includes bugfixes for SoftAP on android. Please try that version.

@digimatt22
Copy link

Just wanted to check on the status of softAP mode? I am happy to help test and update the code as needed for this. I have an ESP32 device that currently uses the Espressif App for SoftAP Provisioning. Currently when I setup to test with a known device (no scanning) I get failed to connect to the device: Failed to connect device SoftAP network.

@mateogianolio
Copy link
Member Author

That's great @digimatt22! You can follow the instructions in the example's README to build the example yourself.

The relevant code for connecting to SoftAP with a known device is:

android
createESPDevice: https://github.com/orbital-systems/react-native-esp-idf-provisioning/blob/master/android/src/main/java/com/espidfprovisioning/EspIdfProvisioningModule.kt#L213-L364
connect: https://github.com/orbital-systems/react-native-esp-idf-provisioning/blob/master/android/src/main/java/com/espidfprovisioning/EspIdfProvisioningModule.kt#L368-L414

ios
createESPDevice: https://github.com/orbital-systems/react-native-esp-idf-provisioning/blob/master/ios/EspIdfProvisioning.swift#L54-L80
connect: https://github.com/orbital-systems/react-native-esp-idf-provisioning/blob/master/ios/EspIdfProvisioning.swift#L82-L108

I can see now that we do a premature permission check for bluetooth in createESPDevice for android (permission check should instead be inside the BLE block), but that shouldn't cause the issue you are experiencing.

Do you have any more logs on your side?

@digimatt22
Copy link

I am not running the new React Native Architecture yet, maybe that will be the holiday project is to port this project to it. However I was able to create a quick mock up in my existing app. I was able to successfully provision a known device over SoftAP with Secure1. I will work to expand the application and do more testing but the basics seem to be in place and working.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants