Skip to content

ESP32 Arduino Rainmaker Error #6435

Closed
Closed
@gcohen10

Description

@gcohen10

Board

ESP32-DevKitC-V4

Device Description

DevKitC

Hardware Configuration

N/A

Version

latest master

IDE Name

Arduino

Operating System

Windows 10

Flash frequency

40Mhz

PSRAM enabled

no

Upload speed

115200

Description

when I try to connect it to the Wi-Fi network using the Rainmaker app it gives me the following error message "Error, No Bluetooth device found with the given prefix"

I tried with both BLE and SoftAP methods and both don't work and when I go on the Wi-Fi and BLE scanner I dont even see it on the list of devices.

Sketch

//This example demonstrates the ESP RainMaker with a standard Switch device.
#include "RMaker.h"
#include "WiFi.h"
#include "WiFiProv.h"

#define DEFAULT_POWER_MODE true
const char *service_name = "PROV_1234";
const char *pop = "abcd1234";

//GPIO for push button
static int gpio_0 = 0;
//GPIO for virtual device
static int gpio_switch = 16;
/* Variable for reading pin status*/
bool switch_state = true;

//The framework provides some standard device types like switch, lightbulb, fan, temperaturesensor.
static Switch my_switch("Switch", &gpio_switch);

void sysProvEvent(arduino_event_t *sys_event)
{
    switch (sys_event->event_id) {      
        case ARDUINO_EVENT_PROV_START:
#if CONFIG_IDF_TARGET_ESP32
        Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on BLE\n", service_name, pop);
        printQR(service_name, pop, "ble");
#else
        Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on SoftAP\n", service_name, pop);
        printQR(service_name, pop, "softap");
#endif        
        break;
    }
}

void write_callback(Device *device, Param *param, const param_val_t val, void *priv_data, write_ctx_t *ctx)
{
    const char *device_name = device->getDeviceName();
    const char *param_name = param->getParamName();

    if(strcmp(param_name, "Power") == 0) {
        Serial.printf("Received value = %s for %s - %s\n", val.val.b? "true" : "false", device_name, param_name);
        switch_state = val.val.b;
        (switch_state == false) ? digitalWrite(gpio_switch, LOW) : digitalWrite(gpio_switch, HIGH);
        param->updateAndReport(val);
    }
}

void setup()
{
    Serial.begin(115200);
    pinMode(gpio_0, INPUT);
    pinMode(gpio_switch, OUTPUT);
    digitalWrite(gpio_switch, DEFAULT_POWER_MODE);

    Node my_node;    
    my_node = RMaker.initNode("ESP RainMaker Node");

    //Standard switch device
    my_switch.addCb(write_callback);
    
    //Add switch device to the node   
    my_node.addDevice(my_switch);

    //This is optional 
    RMaker.enableOTA(OTA_USING_PARAMS);
    //If you want to enable scheduling, set time zone for your region using setTimeZone(). 
    //The list of available values are provided here https://rainmaker.espressif.com/docs/time-service.html
    // RMaker.setTimeZone("Asia/Shanghai");
    // Alternatively, enable the Timezone service and let the phone apps set the appropriate timezone
    RMaker.enableTZService();

    RMaker.enableSchedule();

    RMaker.start();

    WiFi.onEvent(sysProvEvent);
#if CONFIG_IDF_TARGET_ESP32
    WiFiProv.beginProvision(WIFI_PROV_SCHEME_BLE, WIFI_PROV_SCHEME_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, pop, service_name);
#else
    WiFiProv.beginProvision(WIFI_PROV_SCHEME_SOFTAP, WIFI_PROV_SCHEME_HANDLER_NONE, WIFI_PROV_SECURITY_1, pop, service_name);
#endif
}

void loop()
{
    if(digitalRead(gpio_0) == LOW) { //Push button pressed

        // Key debounce handling
        delay(100);
        int startTime = millis();
        while(digitalRead(gpio_0) == LOW) delay(50);
        int endTime = millis();

        if ((endTime - startTime) > 10000) {
          // If key pressed for more than 10secs, reset all
          Serial.printf("Reset to factory.\n");
          RMakerFactoryReset(2);
        } else if ((endTime - startTime) > 3000) {
          Serial.printf("Reset Wi-Fi.\n");
          // If key pressed for more than 3secs, but less than 10, reset Wi-Fi
          RMakerWiFiReset(2);
        } else {
          // Toggle device state
          switch_state = !switch_state;
          Serial.printf("Toggle State to %s.\n", switch_state ? "true" : "false");
          my_switch.updateAndReportParam(ESP_RMAKER_DEF_POWER_NAME, switch_state);
          (switch_state == false) ? digitalWrite(gpio_switch, LOW) : digitalWrite(gpio_switch, HIGH);
      }
    }
    delay(100);
}

Debug Message

None.

Other Steps to Reproduce

I tried with 2 different ESP32's but I am getting the same result. I am not able to detect the ESP32 via BLE or SoftAP mode.

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Activity

me-no-dev

me-no-dev commented on Mar 16, 2022

@me-no-dev
Member

Since you are using Git, could I bother you to switch to the esp32-s3-support branch and give it another go? We have updated RainMaker in that branch

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

I am not using ESP32-S3 and also not using git. I am using Arduino IDE with a normal ESP32 WROOM module. What does git have to do with it ?
When I flash the Arduino example I don’t see any errors. I just see the QR code and URL link when I scan it I get an error message telling me the following:
“No Bluetooth device found with the given prefix“ I get the same message for BLE and SoftAP method and I can’t see the device in the BLE and Wi-Fi scanner.

me-no-dev

me-no-dev commented on Mar 16, 2022

@me-no-dev
Member

that branch support all other chips + ESP32-S3 and has updated code in many places. I asked you so because that is what you posted above:

Version

latest master

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

Sorry I meant to write master branch.

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

Rainmaker partition scheme is only available for ESP32 Dev Module on Arduino. I cannot see that option on any other module on the boards manager. does the partition scheme matter ?

me-no-dev

me-no-dev commented on Mar 16, 2022

@me-no-dev
Member

you should not need a special partition and since you are using ESP32-WROOM, you can safely select the "ESP32 Dev Module". It covers ALL ESP32 modules and variants (not S2, S3 C3, etc.). And is you are using "master branch" then you still say that you are using the git version of this repo and you could just go in there and git checkout esp32-s3-support to switch to the branch I asked :)

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

OK. But why can’t I see the device PROV_1234 in the Wi-Fi and BLE scanner ?

me-no-dev

me-no-dev commented on Mar 16, 2022

@me-no-dev
Member

did you try the new branch? RainMaker in master is very old (more than a year)

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

I only tried the master branch

me-no-dev

me-no-dev commented on Mar 16, 2022

@me-no-dev
Member

And are you willing to try the other branch? Your other option is to wait until we merge it into master and then you update your local copy.

gcohen10

gcohen10 commented on Mar 16, 2022

@gcohen10
Author

I will try the other branch

added this to the 2.0.3 milestone on Mar 29, 2022

26 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions

    ESP32 Arduino Rainmaker Error · Issue #6435 · espressif/arduino-esp32